Home >Backend Development >PHP Problem >PHP determines whether an integer is a prime number

PHP determines whether an integer is a prime number

(*-*)浩
(*-*)浩Original
2019-09-21 09:50:584972browse

质数又称素数。一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数;否则称为合数。

PHP determines whether an integer is a prime number

实现思路

循环所有可能的备选数字,然后和中间数以下且大于等于2的整数进行整除比较,如果能够被整数,则肯定不是质数,相反,就是质数。

算法(推荐学习:PHP编程从入门到精通

这也是最可能先想到的,也就是直接和备选数的中间数去比较,算法源码如下(可继续优化下去):

/**
 * 获取所有的质数
 * @param array $arr
 * @return array
 */function get_prime_number($arr = []) {
    // 质数数组    $primeArr = [];
    // 循环所有备选数    foreach ($arr as $value) {
        // 备选数和备选数的中间数以下的数字整除比较        for ($i = 2; $i <= floor($value / 2); $i++) {
            // 能够整除,则不是质数,退出循环            if ($value % $i == 0) {                break;
            }
        }
        // 被除数$j比备选数的中间数大的则为质数
        // 这样判断的依据:
        // 假如备选数为质数,则内层的for循环不会break退出,则执行完毕,$i会继续+1,即最后$i = floor($value / 2) + 1
        // 假如备选数不为质数,则内层的for循环遇到整除就会break退出,$i不会继续+1,即最后$i <= floor($value / 2)        if ($value != 1 && $i > floor($value / 2)) {            $primeArr[] = $value;
        }
    }    return $primeArr;
}

The above is the detailed content of PHP determines whether an integer is a prime number. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn