NOMBRE_PREMIER

Messages postés
47
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 septembre 2006
- - Dernière réponse : coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
- 18 juil. 2006 à 13:19
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/38553-nombre-premier

dom_ponge
Messages postés
47
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 septembre 2006
-
Un peu lent pour l'utilité(on pourrai mettre les nombres premiers dans un fichier .txt et les reprendres dans le fichier à place d'utilisé cette manière)...
Mais pour rajouté de la rapidité tu pourrai regardé si c'est un nombre pair(sauf pour le nombre 2) et si c'est ce l'est tu ne fait pas tout les calculs pour, sa le rendra 2 fois plus rapide!
Pour l'effort je donne 8.
davwart
Messages postés
855
Date d'inscription
mardi 19 novembre 2002
Statut
Membre
Dernière intervention
28 juillet 2009
1 -
le code est Ok mais pas du tout du tout optimisé (il y a vraiment plein d'astuces pour trouver si un chiffre X est premier).

- 5/10
stepibou
Messages postés
112
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
11 octobre 2006
-
oué, intéressant :

Chez moi ton code : 14.76s

celui d'en dessous sans le break : 12.57s

celui la : 1.54s

$nombres=array(2,3);
$nb=4;
$limit=11150;
while($nb<=$limit){
foreach($nombres as $val){
if(gettype($nb/$val) == 'integer'){
$nbpremier=false;
break;
}
}
if($nbpremier==true)
$nombres[]=$nb;
$nbpremier=true;
$nb++;
}

Voila presque 10 fois plus rapide,
On voit ici l'importance du break!

on peut encore améliorer,... a vous.
;)
yannvag
Messages postés
20
Date d'inscription
dimanche 2 janvier 2005
Statut
Membre
Dernière intervention
14 juillet 2006
-
Mouais t'as raison, j'avais oublé le break;
xeonarno
Messages postés
21
Date d'inscription
mardi 1 février 2005
Statut
Membre
Dernière intervention
20 août 2006
-
Bonjour tous le monde ,

Je vois que hélas vous n'avez pas fait de cours de spécialité math en terminal. En effet en cours d'arithméthique on découvre que pour voir si un nombre est premier, il suffit de calculer sa racine carré et si ce nombre ne possède pas de diviseur entre 2 et sa racine carré alors il est premier.

Pour calculer une racine carré il suffit d'utiliser l'algorithme de Newton qui est très souvent utilisé dans les solutions embarqués à petit puissance de calcul tels que les téléphones portables. je te laisse le soin de le trouver je ne l'ai pas sous la main.(c'est une suite ).

Bien joué stepibou pour le break, je ne savais pas non plus que ça avait autant d'importance de mettre un break, joli coup d'optimisation ....

Cordialement,

Xeonarno