📅  最后修改于: 2023-12-03 15:12:05.308000             🧑  作者: Mango
素数是指只能被1和自身整除的正整数。例如,2、3、5、7、11、13等都是素数。素数是数学中的基础概念,在密码学、数论、组合数学等领域有重要应用。
本程序使用 PHP 语言实现计算指定范围内的素数。
function getPrimes($start, $end)
{
$primes = [];
for ($i = $start; $i <= $end; $i++) {
if (isPrime($i)) {
$primes[] = $i;
}
}
return $primes;
}
function isPrime($num)
{
if ($num < 2) {
return false;
}
for ($i = 2; $i <= sqrt($num); $i++) {
if ($num % $i == 0) {
return false;
}
}
return true;
}
代码说明:
getPrimes
函数接收两个参数 $start
和 $end
,代表要计算的素数范围的起始和结束值。函数返回一个数组,包含在此范围内的所有素数。isPrime
函数接收一个参数 $num
,代表要判断的数字。函数返回一个布尔值,如果 $num
是素数则返回 true
,否则返回 false
。getPrimes
函数中,使用 for
循环遍历 $start
到 $end
的所有数字,使用 isPrime
函数判断每个数字是否为素数,并将素数添加到 $primes
数组中。isPrime
函数中,先特判 $num
是否小于2,小于2的数字不是素数。然后使用 for
循环遍历2到 $num
的平方根(一定程度上缩小了计算量),判断是否能整除 $num
。如果 $num
能被整除,则不是素数,返回 false
。否则,是素数,返回 true
。$start = 1;
$end = 100;
$primes = getPrimes($start, $end);
var_dump($primes);
以上代码计算了从1到100的素数,并将结果打印到屏幕上。
输出结果:
array(25) {
[0]=>
int(2)
[1]=>
int(3)
[2]=>
int(5)
[3]=>
int(7)
[4]=>
int(11)
[5]=>
int(13)
[6]=>
int(17)
[7]=>
int(19)
[8]=>
int(23)
[9]=>
int(29)
[10]=>
int(31)
[11]=>
int(37)
[12]=>
int(41)
[13]=>
int(43)
[14]=>
int(47)
[15]=>
int(53)
[16]=>
int(59)
[17]=>
int(61)
[18]=>
int(67)
[19]=>
int(71)
[20]=>
int(73)
[21]=>
int(79)
[22]=>
int(83)
[23]=>
int(89)
[24]=>
int(97)
}
以上输出结果为1到100之间的所有素数。
本程序使用的是基本的素数判断方法,虽然使用了 sqrt 函数,但是仍有优化空间。对于大范围内的素数计算,会有一定的计算时间和空间占用。可以使用更高效的算法来优化计算。