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;
}
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Usar uma VM dentro do meu notebook como firewall para um dispositivo e... (1)
Alguém que utilize o Warsaw do BB no Ubuntu 24.04 (0)
como instalo panfrost-dri e o driver panfrost fork , ou panfrost (16)