
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 atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Script de montagem de chroot automatica
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Por que passar nas disciplinas da faculdade é ruim e ser reprovado é b... (7)
De volta para o futuro - ou melhor, para o presente (parte 2) (0)









