Estou precisando de ajuda para encontrar um erro no código fonte ,que está em C, do meu programinha para encontrar os números primos de 2 até 1000. Ao executa-lo o programa não desenvolve corretamente da linha 51 até 64. Ele somente calculcula até o numero primo 19, após isso ele mostra somente os primos até 19. Veja o código abaixo:
//calculo de numeros primos de 2 até 1000//
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main()
{
int primo, cont_primo, i, contador2, contador;
int poss_primos[400], nprimo[200];/*com um calculo rápido sabemos que temos 400 possiveis primos entre 2 e 1000*/
int resto;
poss_primos[0]=2;
poss_primos[1]=3;
poss_primos[2]=5;
poss_primos[3]=7;
nprimo[0]=2;/*numeros primos conhecidos*/
nprimo[1]=3;
nprimo[2]=5;
nprimo[3]=7;
cont_primo=7;
/*os quatros primeiros (for) colocam em um vetor os possiveis
numeros primos, aqueles que terminam em 9 , 7, 3 e 1*/
contador2=4;
for(contador=11; contador<1000; contador+=10)
{
poss_primos[contador2]=contador;/*salva todos os numeros terminados em 1*/
contador2=contador2+4;/*salva o poss_primos a cada 4 posições em um vetor (para o vetor ficar ordenado)*/
}
contador2=5;
for(contador=13; contador<1000;contador+=10)/*salva todos os numeros terminados em 3*/
{
poss_primos[contador2]=contador;
contador2=contador2+4;
}
contador2=6;
for(contador=17; contador<1000;contador+=10)/*salva todos os numeros terminados em 7*/
{
poss_primos[contador2]=contador;
contador2=contador2+4;
}
contador2=7;
for(contador=19; contador<1000;contador+=10)/*salva todos os numeros terminados em 9*/
{
poss_primos[contador2]=contador;
contador2=contador2+4;
}
for(contador=4;contador<200;contador++)/* atribui o valor 1 as posições ainda sem valor atribuido*/
nprimo[contador]=1;//até aqui está correto//
for(i=4; i<400; i++)/*numeros primos ainda não definidos*/
{
primo=1;
for(contador=0; contador < i; contador++)/*testa se o numero é primo*/
{
resto = poss_primos[i] % nprimo[contador];/*divide o possivel numero primo por todos os primos já encontrados*/
if (resto==0) primo=0;/*se pelo menos uma vez resto =0 o numero não é primo*/
}
if (primo==1)/*se o numero primo*/
{
cont_primo++;/*conta as posições do vetor nprimo, primeiramente cont_primo=7*/
nprimo[cont_primo]=poss_primos[i];/*passa o valor de poss_primos para o vetor nprimo (os numeros primos) */
}
}
for(contador=0; contador<200; contador++)
{
if(nprimo[contador]>1) printf("%d\n", nprimo[contador]);/*como não sabemos certo quantos numeros primos tem, se o valor não foi modificado não é mostrado*/
}
}
Pergunta
gabrielEM
Olá galera.
Estou precisando de ajuda para encontrar um erro no código fonte ,que está em C, do meu programinha para encontrar os números primos de 2 até 1000. Ao executa-lo o programa não desenvolve corretamente da linha 51 até 64. Ele somente calculcula até o numero primo 19, após isso ele mostra somente os primos até 19. Veja o código abaixo:
Editado por gabrielEMLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.