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

2 réponses


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