Home >Backend Development >PHP Problem >PHP Loop Learning 11: How to determine prime numbers, print prime numbers from 1 to 100, and count their numbers
In the previous article "PHP Loop Learning Ten: Determine the Number of Narcissus and Print the Number of All Narcissus", we will introduce to you how to determine the number of narcissus and use a loop to output the number of all narcissus. Method, let’s continue learning about PHP loops and introduce how to determine whether a number is a prime number and output a prime number from 1 to 100. Interested friends can learn about it~
First of all, let’s learn about it What are prime numbers?
Prime number (prime number) refers to a natural number that cannot be divided by other numbers except 1 and itself; if it can be divided by other numbers, it is called a composite number (stipulation) 1 is neither prime nor composite).
For example: the numbers 2, 3, 17, and 19 are all prime numbers. They can only be divided by 1 and themselves.
So if a number num (for example, 17) is given, how do we determine whether this number num is a prime number? Here are several methods to introduce to you:
Method 1: The simplest method is to find based on the definition of prime numbers
Thinking:
Prime numbers can only be divisible by 1 and itself, that is, they can only be divided by 2 times.
So we use loops to divide N by using every natural number greater than 1 and less than or equal to N, and count the number of times it is divided. If the number is greater than 2, it is not a prime number; if it is equal to 2, then is a prime number.
Let’s take a look at the implementation code:
<?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/>'; } ?>
Output result:
## Method 2:
Idea: Use a number to divide 2 tosqrt (this number) respectively. If it can be divided evenly, it means that the number is not a prime number, otherwise it is a prime number.
<?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/>'; } ?>Output result: Okay, now you know how to determine whether a number is given Prime numbers, let’s make it more difficult:
How to give a range (such as 1~100) and output all prime numbers?
Do you want to use two loops? Based on the above for loop, just put a layer of for loop outside to control the range. Let’s take a look at the implementation code (directly using the code of method 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." 个素数"; ?>Output result: It can be seen that we have the inner for loop In the loop body, a counter
$count is used. After each prime number is output, it increases by 1, so that we can count how many prime numbers there are between 1 and 100.
Recommended: 《PHP interview questions summary (collection)》
The above is the detailed content of PHP Loop Learning 11: How to determine prime numbers, print prime numbers from 1 to 100, and count their numbers. For more information, please follow other related articles on the PHP Chinese website!