/**
*Listedesnombrespremiersàraisonde10parligne.
*
*Squelettegénéralduprogramme
*
*@authorPeterDAEHNEŞHEGGenève
*@version1.0
*/
publicclassPremSquelette{
/*RetournelavaleurtrueSIETSEULEMENTSIkestunnombrepremier*/
privatestaticbooleanprem(intk){
/*Algorithmetestantsikestunnombrepremier*/
}//prem
privatestaticvoidlisterPremiers(intn){
System.out.print("Listedesnombrespremiersentre0et"+n);
intk=0;intcpt=0;
while(k<=n){
 if(prem(k)){
if(cpt%10==0){System.out.println();}
 System.out.print(""+k);cpt=cpt+1;
 }
k=k+1;
}
System.out.println();System.out.println("Ilyena"+cpt);
}//listerPremiers
publicstaticvoidmain(String[]args){
 if(args.length<1){
 System.out.println("Vousdevezfournirlalimitecommeparamètre.");
 }else{
listerPremiers(Integer.parseInt(args[0]));
}
}//main
}//PremSquelette
Temps de calcul des diverses versions
Prem1 - temps de calcul pour tester les nombres premiers entre 0 et 1000000: 256.559 [secondes]
Prem2 - temps de calcul pour tester les nombres premiers entre 0 et 10000000: 6.905 [secondes]
Prem3 - temps de calcul pour tester les nombres premiers entre 0 et 10000000: 3.485 [secondes]
Prem4 - temps de calcul pour tester les nombres premiers entre 0 et 10000000: 2.332 [secondes]
Le cas de Prem1 doit être considéré à part et n’est pas comparable avec les autres.
Pour les autres solutions, on observe que les résultats expérimentaux confirment ce qu’on attendait
théoriquement:
entre Prem2 et Prem3, on gagne un facteur d’environ 2 (on ne fait que la moitié du travail dans Prem3, puisqu’on ne
teste pas les nombres pairs);
entre Prem3 et Prem4, on diminue encore le temps d’environ un tiers (en ne traitant pas les multiples de 3, il y a
environ un tiers de nombres en moins à tester).
/*Attention!versionNONFONCTIONNELLE!ŞNefonctionnequepourk<121*/
privatestaticbooleanprem(intk){
if(k<2){returnfalse;}
if((k==2)||(k==3)||(k==5)||(k==7)){returntrue;}
if((k%2!=0)&&(k%3!=0)&&(k%5!=0)&&(k%7!=0)){
returntrue;
}
returnfalse;
}//prem
/*Applicationstrictedeladéfinition:
kestpremiers'ilaexactementdeuxdiviseursdistincts.*/
privatestaticbooleanprem(intk){
intcpt=0;
inti=1;
while(i<=k){
if(k%i==0){cpt=cpt+1;}
i=i+1;
}
returncpt==2;
}//prem
/*Onarrêtelarecherchedesdiviseursàlaracinecarréedek.
Lesnombres0et1sonttraitésàpart.
Onretournelerésultatdèsqueconnu(undiviseuraététrouvé).*/
privatestaticbooleanprem(intk){
if(k<2){returnfalse;}
intracine=(int)Math.sqrt(k);
inti=2;
while(i<=racine){
if(k%i==0){returnfalse;}
i=i+1;
}
returntrue;
}//prem
/*Onarrêtelarecherchedesdiviseursàlaracinecarréedek.
Lesnombres0et1ainsique2etlespairssonttraitésàpart.
Onretournelerésultatdèsqueconnu(undiviseuraététrouvé).*/
privatestaticbooleanprem(intk){
if(k==2){returntrue;}
if((k<2)||(k%2==0)){returnfalse;}
intracine=(int)Math.sqrt(k);
inti=3;
while(i<=racine){
if(k%i==0){returnfalse;}
i=i+2;
}
returntrue;
}//prem
/*Onarrêtelarecherchedesdiviseursàlaracinecarréedek.
Lesnombres0,1,2,3ainsiquelespairsetlesmultiplesde3sonttraitésàpart.
Onretournelerésultatdèsqueconnu(undiviseuraététrouvé).*/
privatestaticbooleanprem(intk){
if((k==2)||(k==3)){returntrue;}
if((k<2)||(k%2==0)||(k%3==0)){returnfalse;}
intracine=(int)Math.sqrt(k);
inti=5;intpas=2;
while(i<=racine){
if(k%i==0){returnfalse;}
i=i+pas;pas=6Şpas;
}
returntrue;
}//prem
1 / 1 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !