webspace hosting reseller hosting|             | blog| forum| dating| free hosting| openhost| report abuse
Internet Fax To Email - Unlimited

Unlimited Faxes, No Fees, Dedicated Phone Number

Free Website Templates
//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;
}