Maison  >  Article  >  développement back-end  >  Boucle PHP apprentissage huit : comptez le nombre de nombres parfaits de 1 à 10 000 et affichez tous les nombres parfaits

Boucle PHP apprentissage huit : comptez le nombre de nombres parfaits de 1 à 10 000 et affichez tous les nombres parfaits

青灯夜游
青灯夜游original
2021-08-13 14:49:056346parcourir

Dans l'article précédent "PHP Loop Learning 7 : Deux méthodes pour imprimer une table arithmétique rapide 9*9", nous avons présenté comment utiliser les boucles for et while pour imprimer la table de multiplication 99. Continuons à comprendre la boucle PHP et introduisons la méthode permettant de juger si un nombre donné est un nombre complet. Les amis intéressés peuvent en apprendre davantage ~

Tout d'abord, comprenonsQu'est-ce qu'un nombre parfait ?

Nombre parfait Le nom complet est Nombre parfait Si un nombre est exactement égal à la somme de ses facteurs, alors le nombre est appelé « nombre parfait ». (Un facteur fait référence à un diviseur autre que lui-même.)

Par exemple : 6=1+2+3, 6 est un nombre parfait.

Donc, si un nombre num (par exemple, 6) est donné, comment pouvons-nous juger si le nombre num est complet ?

Idées :

1. Décomposez le nombre num en facteurs, c'est-à-dire trouvez tous les nombres qui peuvent diviser num sauf lui-même. (Cela nécessite l'utilisation de boucles).

Nous prenons la boucle for comme exemple. Parce que 1 peut diviser n'importe quel entier, la condition initiale de la boucle est définie i=1 et le diviseur ne peut pas être num lui-même, donc la condition de restriction est i

$num=6;
for($i=1;$i<$num;$i++){
    if($num%$i==0){//分解因数
        
    }
}

2 Après avoir trouvé les facteurs, vous devez ajouter ces facteurs et les résumer. Cela nécessite une variable $sum pour recevoir le résultat du calcul. Puisqu'il s'agit d'une addition, $sum peut se voir initialement attribuer une valeur de 0.

$num=6;
$sum=0;
for($i=1;$i<$num;$i++){
    if($num%$i==0){//分解因数
        $sum=$sum+$i;  //各因数相加,求和
    }
}

3. Déterminez si $sum et $num sont égaux, $num est un nombre parfait.

Le code d'implémentation est donné ci-dessous :

Regardez les résultats de sortie :

Boucle PHP apprentissage huit : comptez le nombre de nombres parfaits de 1 à 10 000 et affichez tous les nombres parfaits

Maintenant que nous savons comment juger si un nombre est complet, augmentons la difficulté : Sortez une plage donnée (seulement 1 ~10 000 Okay) tous des nombres parfaits.

Analyse : il y a une plage de 1 à 10 000, puis nous utilisons une boucle for pour limiter la plage, nous pouvons donc ajouter une boucle for en dehors du code ci-dessus :

<?php
header("Content-type:text/html;charset=utf-8");
for($a=1;$a<=10000;$a++){
	$sum=0;
	for($i=1;$i<$a;$i++){
	    if($a%$i==0){//分解因数
	        $sum=$sum+$i;  //各因数相加,求和
	    }
	}
	if($sum==$i){//如果这个数等于本身 则为完数
	echo "$i 是完数!<br>";
	}
}	
?>

Regardez le résultat de sortie :

Boucle PHP apprentissage huit : comptez le nombre de nombres parfaits de 1 à 10 000 et affichez tous les nombres parfaits

Et s'il existe de nombreuses plages données et que vous voulez savoir combien il y a de nombres parfaits ? Vous pouvez ajouter un compteur $b à l'instruction if Chaque fois qu'un nombre complet est généré, $b augmentera de 1.

<?php
header("Content-type:text/html;charset=utf-8");
$b=0;
for($a=1;$a<=10000;$a++){
	$sum=0;
	for($i=1;$i<$a;$i++){
	    if($a%$i==0){//分解因数
	        $sum=$sum+$i;  //各因数相加,求和
	    }
	}
	if($sum==$i){//如果这个数等于本身 则为完数
	echo "$i 是完数!<br>";
	$b++;
	}
}
echo "<br>1~10000范围内有:$b 个完数。";
?>

Regardez le résultat :

Boucle PHP apprentissage huit : comptez le nombre de nombres parfaits de 1 à 10 000 et affichez tous les nombres parfaits

OK, c'est fait ! Tous les nombres parfaits compris entre 1 et 10 000 sont générés et le nombre de nombres parfaits est compté.

D'accord, c'est tout. Si vous voulez savoir autre chose, vous pouvez cliquer ici. → →Tutoriel vidéo PHP

Recommandation :"Collection de questions d'entretien PHP (collection)"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn