下面是详细讲解“php 求质素(素数) 的实现代码”的攻略。
质数,又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数。
例如:2、3、5、7、11、13、17、19、23、29、31、37等都是质数。
目前已知求质数的算法有许多种,例如试除法、线性筛法、厄拉多塞筛法等。在本篇攻略中,我们将介绍如何使用试除法求质数。
试除法,即依次判断被除数 n 是否能够被 2 到 sqrt(n) 中的任意一个数整除。如果能整除,则 n 不是质数;如果不能整除,则 n 是质数。
下面是一个简单的使用试除法实现求质数的 PHP 代码:
<?php
function isPrime($n) {
if($n < 2) {
return false;
}
for($i = 2; $i <= sqrt($n); $i++) {
if($n % $i == 0) {
return false;
}
}
return true;
}
for($i = 1; $i <= 100; $i++) {
if(isPrime($i)) {
echo $i." ";
}
}
?>
上面的代码中,isPrime 函数用于判断一个数是否是质数。方法是遍历从2到sqrt(n)之间的所有自然数,判断 n 是否能够被其整除,如果能整除,则n不是质数,返回false;如果不能整除,则 n 是质数,返回true。
在主程序中,我们遍历1到100之间的所有自然数,如果是质数则输出。
下面是输出结果:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
我们可以看到,输出结果正是1到100之间的所有质数。
在上面的代码中,我们首先定义了一个判断质数的函数isPrime。接着,我们在主程序中利用该函数判断1到100的所有数,输出所有质数。
如果我们想输出100到200之间的质数,只需要将主程序中的循环改为:
for($i = 100; $i <= 200; $i++) {
if(isPrime($i)) {
echo $i." ";
}
}
运行代码后,输出结果如下:
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
我们可以看到,输出结果正是100到200之间的所有质数。