Dans l'article précédent "PHP Loop Learning Ten : Déterminer le nombre de narcisses et imprimer le nombre de toutes les jonquilles", nous vous avons présenté la méthode pour déterminer le nombre de jonquilles et utiliser une boucle pour afficher le nombre de toutes les jonquilles .Poursuivons la boucle PHP Pour apprendre, nous allons présenter comment déterminer si un nombre est un nombre premier et générer un nombre premier de 1 à 100. Les amis intéressés peuvent en apprendre davantage ~
Tout d'abord, comprenonsQu'est-ce que c'est ? un nombre premier ?
Nombre premier (nombre premier) fait référence à un nombre naturel qui ne peut être divisé par d'autres nombres que 1 et lui-même s'il peut être divisé par d'autres nombres, on l'appelle un nombre composé (1 n'est ni un nombre premier ; ni un numéro composé).
Par exemple : les nombres 2, 3, 17 et 19 sont tous des nombres premiers, ils ne peuvent être divisibles que par 1 et par eux-mêmes.
Donc, si un nombre num (par exemple, 17) est donné, comment déterminer si ce nombre num est un nombre premier ? Voici quelques méthodes à vous présenter :
Méthode 1 : La méthode la plus simple consiste à trouver en fonction de la définition des nombres premiers
En pensant :
Les nombres premiers ne peuvent être divisibles que par 1 et par lui-même, cela c'est-à-dire qu'ils ne peuvent être divisibles que par 2 de second ordre.
Nous utilisons donc une boucle pour diviser N en utilisant tout nombre naturel supérieur à 1 et inférieur ou égal à N, et comptons le nombre de fois où il est divisé. Si le nombre est supérieur à 2, ce n'est pas un. nombre premier ; s’il est égal à 2, c’est un nombre premier.
Jetons un coup d'œil au code d'implémentation :
<?php header("content-type:text/html;charset=utf-8"); $num=17; $count = 1; for($i = 2; $i <= $num; $i++) { if(($num % $i)== 0) $count ++; } if($count == 2) { echo $num . '就是素数<br/>'; }else{ echo $num . '不是素数<br/>'; } ?>
Résultat de sortie :
Méthode 2 :
Idée : Utilisez un nombre pour diviser 2 en sqrt(ce nombre)< /code >, s'il est divisible, cela signifie que le nombre n'est pas un nombre premier, sinon c'est un nombre premier. <code>sqrt(这个数)
,如果能被整除,则表明此数不是素数,反之是素数。
下面来看看实现代码:
<?php header("content-type:text/html;charset=utf-8"); $num=19; $flag = 1; for($i = 2; $i*$i <= $num; $i++) //能被2 - sqrt(i)整除的数 { if($num % $i == 0) { $flag = 0; break; } } if($flag == 1) { echo $num . '就是素数<br/>'; }else{ echo $num . '不是素数<br/>'; } ?>
输出结果:
好了知道怎么给定一个数来判断是不是素数了,下面加大难度:怎么给定一个范围(例如1~100),输出全部素数呢?
是不是要使用两个循环,在上面for循环的基础上,在外面套一层for循环来控制范围即可。我们来看看实现代码(直接使用方法2的代码):
<?php header("content-type:text/html;charset=utf-8"); $count = 0; for($k = 2; $k <= 100; $k++){ //从2开始,遍历到100 $flag = 1; for($i = 2; $i*$i <= $k; $i++) {//能被2 - sqrt(i)整除的数 if($k % $i == 0) { $flag = 0; break; } } if($flag == 1) { echo $k . '是素数<br/>'; $count ++; } } echo '<br/>1~100间共有 '.$count." 个素数"; ?>
输出结果:
可以看出,我们在内层for循环的循环体中,使用一个计数器$count
rrreeeRésultat de sortie :
Maintenant que vous savez comment déterminer si un nombre est un nombre premier étant donné un nombre, rendons les choses plus difficiles : Comment donner une plage (telle que 1 ~100) et afficher tous les nombres premiers ?
Devrions-nous utiliser deux boucles ? Sur la base de la boucle for ci-dessus, placez simplement une boucle for à l'extérieur pour contrôler la plage. Jetons un coup d'œil au code d'implémentation (directement en utilisant le code de la méthode 2) : 🎜rrreee🎜Résultat de sortie : 🎜🎜🎜🎜On peut voir que nous utilisons un compteur$count
dans le corps de la boucle for interne , et chaque fois qu'il est émis Après un nombre premier, il augmente de 1, afin que vous puissiez compter combien de nombres premiers il y a entre 1 et 100. 🎜🎜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!