Trouver les nombres premiers de la facon la plus rapide possible
je joins le makefile pour les linuxiens (bien cachés apparement, vu le nombre
de <conio.h> que je vois (Quelle Horreur !!))
usage : prog <options>;
options : -n <l> Nombre limite\n"
-t Affiche temps d'execution (en secondes)\n"
-w <f> Sortie dans le fichier <f>\n";
Source / Exemple :
/* jerome berthier (au cas ou on voudrait le savoir) !!
Programme réalisé en moins d'une heure donc pas bien relu,
y'a surement des trucs qui servent à rien
mais il tourne
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <time.h>
#ifndef ULONG
#define ULONG unsigned long
void AfficheHelp( char * progname = "erastothene" );
int main( int n , char ** A )
{
ULONG lim=0;
char *OSname;
//sauver dans un fichier, ou afficher le temps
bool save(false), tps(false);
clock_t tdeb;
clock_t debprog = clock();
if( n == 1 ) //pas d'argument, on quitte le prog
{ AfficheHelp( A[0] ); return 1; }
for (int i=1 ; i<n ; i++)
{
if (strcmp(A[i],"-t")==0 ) tps=true;
else if (strcmp(A[i],"-n")==0 ) { if (++i<n) lim = (ULONG)atoi(A[i]); }
else if (strcmp(A[i],"-w")==0 ) { if (++i<n) { OSname = A[i];save=true;} }
else
{
AfficheHelp( A[0] );
exit(1);
}
}
try{
//construcion du tableau de booleen
bool * prem = new bool[ lim+1 ];
// memset(prem , true , sizeof(prem) );
for( ULONG i=2; i<= lim ; i++ ) prem[i] = true;
//debut
if( tps ) { tdeb = clock(); }
for( ULONG i=2; i<= lim ; i++ )
if( prem[i] )
for( ULONG j=2*i; j<=lim; j+=i )
prem[j]=false;
if( tps ) { cout << "Duree calcul : " << (double)(clock() - tdeb )/CLOCKS_PER_SEC << endl; }
//fin
if( save )
{
ofstream OS(OSname);
if( tps ) { tdeb = clock(); }
for( ULONG i=2; i<=lim ; i++ )
if( prem[i] )
OS << i << '\n';
OS.close();
if( tps ) { cout << "Duree ecriture : "
<< (double)(clock() - tdeb )/CLOCKS_PER_SEC << endl; }
}
if( tps )
{
cout << "Temps d'execution total : " << (double)(clock() - debprog )/CLOCKS_PER_SEC << endl;
}
}
catch( ... )
{
cerr << "Erreur !! (Mais ou ??? lol) \n";
exit(1);
}
return 0;
}
/////////////////////////////// FIN CODE DEBUT MAKEFILE basique ///////////////////////////////////////
CXXF=-Wall -Wno-deprecated
TARGET=run
$(TARGET): erastothene.cc
g++ $(CXXF) erastothene.cc -o $(TARGET)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.