Ir para conteúdo
Fórum Script Brasil
  • 0

NUMEROS PRIMOS ENTRE 2 E 1000


gabrielEM

Pergunta

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:

//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*/
	}		
 }
Editado por gabrielEM
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...