Afficher les n nombres premiers après x

Fermé
schechtax - 9 mars 2016 à 16:23
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 - 9 mars 2016 à 16:40
Bonjour à tous,

Je suis débutant en php et je dois réaliser un exercice : afficher les n nombres premiers après x (par exemple : afficher les 10 nombres premiers après 1000)

Voilà ce que j'ai fais, malheureusement la page ne me retourne que le 1er echo (echo "Les $nb nombres premiers après $nombre sont";) et rien après.



<html>
<head><title> Determine les Nombres Premiers </title></head>

<body>
<?php
include ('fonctions.php');
?>
<form method ="POST" action ="premiers.php">
<p>Entrez le nombre de départ (ex : 1000) : <input type ="integer" name ="start"/></p>
<p>Entrez le nombre de nombres premiers désirés (ex: 10): <input type="integer" name ="nb"/></p>
<input type="submit" name="valider" value="OK"/>
</form>

<?php
if (isset($_POST['valider'])){
$nombre=$_POST['start'];
$nb=$_POST['nb'];
echo "Les $nb nombres premiers après $nombre sont";
for ($i= $nombre +1; $i = $compteur ; $i++) {
$compteur = 0;
if (premiers($i)) {
echo "$i";
echo "<br />";
$compteur = $compteur +1;


}

}
}
?>
</body>
</html>



ma fonction de calcul des nombres premiers :



<?php
function premiers ($nombre){

//$compteur = 0:

$flag=true;
if ($nombre ==2){
$flag=false;
}
elseif (($nombre >2) && ($nombre%2==0)){
// Nombre pair different de 2
$flag=true;
// Nombre impair plus grand que 1
}
else{
for ($i=3; $i<$nombre; $i++){
$reste = $nombre%$i;
if ($reste == 0){
$flag=true;
break;
}
else{
$flag=false;
}
}
}
if ($flag==true){
$verdict = false;
}
elseif ($flag==false){
$verdict = true;
}
return $verdict;
}

?>


2 réponses

edit :
je viens de me rendre compte que le compteur dans la boucle for se remets à 0 à chaque incrémentation, mais même en le sortant, ca ne marche toujours pas...
0
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 844
Modifié par diablo13800 le 9/03/2016 à 16:41
Bonjour,

Cela est normal , votre boucle est plutôt ... fausse.

Vous devez Affichez NB nombre
Donc votre boucle for doit ressembler a quelque chose comme ça :
 
for($i=0;$i<nb;$i++){
//votre code
}


Ensuite vous avez votre nombre de départ qui est $nombre , vous pouvez lui l’incrémenter, cela changerais rien puisque plus d'affichage ou d'utilisation après votre for.

Donc "//votre code" deviendra quelque chose comme ca:
 
while(premier($nombre)==false){
$nombre++;
}
echo $nombre."<br/>";


Pour expliquer, Tant que Nombre n'est pas premier on l’incrémente.
quand il est premier on sort du While et on l'affiche.

et ça on le fera nb Fois puisque dans la boucle "for".

J’espère avoir été assez clair,
Si il y a quelque chose que vous ne comprenez pas n'hésitez pas.
0