Maison  >  Article  >  développement back-end  >  PHP Loop Learning 11 : Comment déterminer les nombres premiers, imprimer les nombres premiers de 1 à 100 et compter leurs nombres

PHP Loop Learning 11 : Comment déterminer les nombres premiers, imprimer les nombres premiers de 1 à 100 et compter leurs nombres

青灯夜游
青灯夜游original
2021-08-23 12:00:533968parcourir

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 . &#39;就是素数<br/>&#39;;
}else{
	echo $num . &#39;不是素数<br/>&#39;;
}
?>

Résultat de sortie :

PHP Loop Learning 11 : Comment déterminer les nombres premiers, imprimer les nombres premiers de 1 à 100 et compter leurs nombres

Méthode 2 :

Idée : Utilisez un nombre pour diviser 2 en sqrt(ce nombre), 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 . &#39;就是素数<br/>&#39;;
}else{
	echo $num . &#39;不是素数<br/>&#39;;
}
?>

输出结果:

PHP Loop Learning 11 : Comment déterminer les nombres premiers, imprimer les nombres premiers de 1 à 100 et compter leurs nombres

好了知道怎么给定一个数来判断是不是素数了,下面加大难度:怎么给定一个范围(例如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 . &#39;是素数<br/>&#39;;
		$count ++;
	}
}
echo &#39;<br/>1~100间共有 &#39;.$count." 个素数";
?>

输出结果:

PHP Loop Learning 11 : Comment déterminer les nombres premiers, imprimer les nombres premiers de 1 à 100 et compter leurs nombres

可以看出,我们在内层for循环的循环体中,使用一个计数器$count

Jetons un coup d'œil au code d'implémentation :

rrreeeRésultat de sortie :

PHP Loop Learning 11 : Comment déterminer les nombres premiers, imprimer les nombres premiers de 1 à 100 et compter leurs nombres

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 : 🎜🎜PHP Loop Learning 11 : Comment déterminer les nombres premiers, imprimer les nombres premiers de 1 à 100 et compter leurs nombres🎜🎜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!

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