Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gudhu

um milhao de primos em menos de 500 segundos

Recommended Posts

eh possivel isso?

 

consegui em apenas 50 min com o programa abaixo:

#include<time.h>#include<stdio.h>#include<math.h>int main(){unsigned long int d,n=5,i,ne=1000000,cont=2;getchar();clock_t start, end;start=clock();printf ("2 3");while(cont<=ne)	{	d=3;	for(i=0;d<=(int)sqrt((float)n);d=d+2)		{		if(n%d==0)		{		i++;		}		}	if(i==0)	{	printf("%li",n);	cont++;	}n=n+2;}end=clock();printf(" %f",((end-start)/CLK_TCK));getchar();getchar();return(0);}

alguem tem algo q possa me ajudar a encurtar o tempo ?

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já ouviu falar em GMP Library (Gnu Multiprecision Library)? É uma biblioteca C de bem otimizada. Usando em conjunto com NTL (Number Theory Library), pode-se implementar contas de inteiros com precisão indefinida (só dependendo da memória do seu computador). O maior problema é compilar, que tem seus macetes. Mas se você quiser, posso te enviar por e-mail a minha versão compilada (para pentium iv, mas acho que qualquer pentium serve), junto com as headers. Quanto a exemplos, procure na internet mesmo, que encontrará fácil.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Edite isso e vê se fica melhor:

 

for(i=0; d <= (n/2); d=d+2)   {	  if((n % d) == 0){		 i++;		 break;	  }   }

 

Errei pessoas desculpa.

A variável a ser comparada no for é d

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.