Soyez le premier à donner votre avis sur cette source.
Snippet vu 10 848 fois - Téléchargée 771 fois
function is_prime($_nombre) { if(((int) $_nombre === $_nombre ) && $_nombre > 1) { //Calcul de la racine du nombre $sqrt = sqrt($_nombre); //Si le nombre est multiple de 2 if($_nombre % 2 == 0) { return false; } //Si la racine du nombre est entière elseif((int)$sqrt === $sqrt) { return false; } //On vérifie que la division de tous les nombres compris entre 3 et la racine est entière for($i = 3; $i < $sqrt; $i+=2) { //Si la division est entière if((int) ($_nombre/$i) === $_nombre) { return false; break; } } //Alors le nombre est premier return true; } //Hors limite de PHP else { return '(Attention le resultat est faux : veuillez entrer un entier compris entre 2 et '.PHP_INT_MAX.') '; } }
16 août 2015 à 00:41
La fonction dit que 9 n'est pas premier parce que le test sur $sqrt est fait avec === et pas ==.
16 août 2015 à 00:33
19 août 2010 à 11:59
10 août 2010 à 15:16
alors petit rajout à faire histoire de ne pas perdre du précieux temps de calcul : il faut rajouter une condition avant la boucle for (j'ai fait la même erreur dans mon exemple que j'ai rectifié dans mon dernier commentaire) car il ne sert à rien de rentrer dans la boucle for si $_nombre est pair ou un carré...
je te conseil donc de rassembler les conditions précédente dans un if(condition1 || condition2) suivi d'un else{for...
voilà c'est une petite optimisation non négligable pour un benchmark future ;)
en tout cas merci pour cette contribution et n'hésite pas à venir poster sur Codes-Sources : une source est toujours améliorable et tu pourras ainsi apprendre beaucoup de petites choses :-)
9 août 2010 à 17:29
voilou amusez vous bien
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.