Enviado em 09/12/2017 - 02:20h
Gostaria de saber como transformar esse código que está em C++ em C.#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define MAXN 1000001
char input [10];
int insize = 0;
bool primo[MAXN];
void sieve(){
memset(primo, 1, sizeof(primo));
long long int l = sqrt(MAXN);
primo[1] = 0;
primo[2] = 1;
for(long long int i = 2; i < MAXN; i++){
if(primo[i]){
for(long long int j = i*2; j <= MAXN; j+=i)
primo[j] = 0;
}
}
/*
for(int i = 1; i < l; i++)
printf("%d ", primo[i]);
printf("\n"); */
}
int pd[7][7];
int calc(int o, int d){
// printf("%d %d\n", o, d);
if(pd[o][d] != -1) return pd[o][d];
if(input[o] == '0') return pd[o][d] = 0;
long long int tmp = 0;
for(int i = d, p = 0; i >= o; i--, p++)
tmp += pow(10, p) *(input[i]-'0');
// printf("primo[%lld]=%d\n", tmp, primo[tmp]);
if(primo[tmp] == 1)
return pd[o][d] = 1;
// printf("aq\n");
for(int i = o; i < d; i++){
if(calc(o, i) && calc(i+1, d))
return pd[o][d] = 1;
}
return pd[o][d] = 0;
}
int main(){
sieve();
int n;
scanf("%d", &n);
while(n--){
scanf("%s", input);
insize = strlen(input);
memset(pd, -1, sizeof(pd));
if(calc(0, insize-1))
printf("sim\n");
else printf("nao\n");
}
return 0;
}
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
esqueci a senha do boot do notebook dell vostro 3300 (2)
É normal não gostar de KDE? (1)
PIP3 - erro ao instalar módulo do mariadb para o Python (8)
systemd-resol... precisa ser reiniciado periodicamente (6)
Meu Amigo não consegue entrar em meu mundo, via tailscale, hamachi e z... (2)