Unlimited Faxes, No Fees, Dedicated Phone Number
//POR : ANDRÉ MENDES desde 18-08-2009 //ATENÇÃO : COMPILAR COM O g++ //ATENÇÃO : CONSERTAR O BUG COM O NUMERO 2, MANTENDO A PERFORMACE E SEM GAMBIARRA! #include <stdio.h> #include <math.h> #include <time.h> FILE *arquivo; clock_t inicio,fim; double dif; bool primo(int); int main(){ inicio = clock(); int n=0,aux,ultimo; arquivo = fopen("primos.txt","w+"); printf("\n## Programa para calcular os n primeiros numeros primos ##\n\n"); printf("Digite n -> "); scanf("%d",&n); //-> Com essa incrementação, o tempo foi de 13,4 segundos para 300 mil primos*/ <-- OLD OLD OLD OLD HAHAHAHAHAH for(aux=0;aux<=n;aux++){ if( primo( ((4*aux) - 1) ) ){fprintf(arquivo,"%d\n", ((4*aux)-1) ); ultimo = ((4*aux)-1);} else { if( primo( ((4*aux) + 1) ) ){fprintf(arquivo,"%d\n", ((4*aux)+1) ); ultimo = ((4*aux)+1); }} } fim = clock(); dif = difftime(fim,inicio); printf("\nNumero primo #%d -> %d\nO arquivo esta pronto\n\nTempo total de calculo -> %f segundos\n",n,ultimo,dif/1000000); fclose(arquivo); } bool primo(int a){ int aux; bool divide = true; if(a<=0) return false; else { for(aux=( pow(a,0.5) );aux>1;aux--){ if((a % aux) == 0 ){divide = false; break;} } } return divide; }