📌  相关文章
📜  计算范围内素数的 PHP 程序(1)

📅  最后修改于: 2023-12-03 15:12:05.308000             🧑  作者: Mango

计算范围内素数的 PHP 程序

什么是素数

素数是指只能被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 函数,但是仍有优化空间。对于大范围内的素数计算,会有一定的计算时间和空间占用。可以使用更高效的算法来优化计算。

参考资料

什么是素数 - 百度百科