Nombre premier

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 649 fois - Téléchargée 30 fois

Contenu du snippet

Entre un nombre quelconque, le script trouve le nombre premier suivant

Source / Exemple :


<?
if ($menu == "")
{
echo "<form method = 'post' action = '$PHP_SELF?menu=chercher'><input type = 'text' name = 'nbr'><input type = 'submit' value='chercher'></form>'";
}
if ($menu == "chercher")
{
$condition = 0;
$c = $nbr;
while ($condition == 0)
{
 $essai = 0;
 $d = $nbr;
 $d = $d -1;
 while ($d > 1)
  {
  $verif = $nbr/$d;
  $verif2 = ceil ($verif);
  if ("$verif2" == "$verif")
  {
  $essai++;
  }
  $d = $d - 1;
  }
  if ($essai == 0)
  {
  $condition = 1;
  }
 $nbr++;
}
$nbr--;
echo "$nbr";
}
?>

Conclusion :


Faire attention au temps de calcul sur certains serveurs pour des nombres élevés ... (100000000000000 c un peu long ....)

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
21 octobre 2009

Bon désolé de dire ça mais c'est très mal codé, voilà une simplification du code, on y vois plus clair et c'est plus rapide..

<?PHP

for($n = 666663; true; $n++)
{
for($d = $n - 1; $d > 1; $d--){
if($n % $d == 0) continue(2);
}
break;
}

echo $n;

?>
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
Que dire...
je me baladais par curiosite...
ca n'a rien d'initie... ok ca a 5 ans, mais bon, vive le typage des variables...
if ("$verif2" == "$verif") pour des variables numeriques c'est top...
Messages postés
59
Date d'inscription
lundi 31 décembre 2001
Statut
Membre
Dernière intervention
11 mai 2006

Yep, c'est une idée ... mais j'ai fait le code pour un crous d'info et il nous demandait de faire comme ca et je n'ai pas pris le temps de l'améliorer avant de le mettre ici ...

Mais c'est une idée à creuser ...
Messages postés
172
Date d'inscription
lundi 30 avril 2001
Statut
Membre
Dernière intervention
6 avril 2003

Tu pourrais améliorer grandement le temps d'execution de ton algo simplement en mettant :
$d = round($d /2);
à la place de :
$d = $d -1;
Pour éviter de faire les tests des chiffres pour lequels ont est sur qu'il n'y a pas de correspondance. Par exemple les chiffres de 50 à 100

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.