Maison > développement back-end > tutoriel php > 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

青灯夜游
Libérer: 2023-04-10 15:08:02
original
6410 Les gens l'ont consulté

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){//分解因数
        
    }
}
Copier après la connexion

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;  //各因数相加,求和
    }
}
Copier après la connexion

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

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

Copier après la connexion

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>";
	}
}	
?>
Copier après la connexion

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 个完数。";
?>
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal