Décrivez ici votre problème ou ce que vous cherchez à faire.
Afficher tous les nombres par ordre décroissant entre 0 et 100, puis affichez hourrah chaque nombre premier entre 100 et zéro au sein de la même boucle qui affiche les pairs décroissants.
Entourez votre code en utilisant "```" pour bien le mettre en forme. (ne copiez pas trop de code)
```"<?php
//boucle qui donne les nombres paires au dessous de 100
for($n=100; $n>0; $n-=1 ){
$tableaunombrepaires[]= $n;
//boucle qui donne les diviseurs
for($j=2; $j<=$n/2; $j++) {
$diviseurs[]= $j;
}
// ici on divise
foreach($diviseurs as $diviseur){
$restes[]=$n%$diviseur;
}
if(!(in_array(0,$restes))){
echo "$n hourrah! \n";
}
else{
echo "$n \n";
}
}
?>"
**Ce que je veux**
résoudre le le probleme svp car mon code ne marche pas
Alors avant de repondre je reposte ton code parce que tu a wrappé des ' dans tout le texte :x
<?php
//boucle qui donne les nombres paires au dessous de 100
for($n=100; $n>0; $n-=1 ){
$tableaunombrepaires[]= $n;
//boucle qui donne les diviseurs
for($j=2; $j<=$n/2; $j++) {
$diviseurs[]= $j;
}
// ici on divise
foreach($diviseurs as $diviseur){
$restes[]=$n%$diviseur;
}
if(!(in_array(0,$restes))){
echo "$n hourrah! \n";
} else {
echo "$n \n";
}
}
Alors, il y'a quelques modif à faire:
<?php
for ($nb=100; $nb > 0; $nb--) {
$isPrimary = true;
// Si Le nombre est divisible par 2, ce n'est pas un nombre premier de toute façon, du coup on passe directement à l'itération suivante.
if($nb % 2 == 0) {
continue;
}
for ($div=2; $div <= ($nb/2); $div++) {
// Si le nombre a été divisé
if ($nb % $div == 0) {
// Si le nombre n'est pas primary, on dit à la loop que le nb n'est pas primary et on break cete sous-loop.
$isPrimary = false;
break;
}
}
// Si la loop $div n'a pas été break et qu'il a laissé $isPrimary a true, on echo
if ($isPrimary) {
echo 'Hourra!\n';
} else {
echo $nb . '\n';
}
}
Au fait le ?>
à la fin faut pas le mettre, c'est une norme PSR ;p :
https://www.php-fig.org/psr/psr-12/
Section 2.2