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*/}}
Utilizamos cookies e tecnologias semelhantes de acordo com a nossa Política de Privacidade, e ao continuar navegando, você concorda com estas condições.
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.