Jump to content
Fórum Script Brasil
  • 0

NUMEROS PRIMOS ENTRE 2 E 1000


gabrielEM

Question

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*/
	}		
 }
Edited by gabrielEM
Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      651.8k
×
×
  • Create New...