首页 > 后端开发 > php教程 > 如何使用循环和自定义公式有效地找到素数?

如何使用循环和自定义公式有效地找到素数?

DDD
发布: 2024-10-30 09:13:27
原创
875 人浏览过

How can I efficiently find prime numbers using a loop and a custom formula?

将素数公式合并到循环中

在使用循环高效查找素数的过程中,您可能会遇到现有的情况方法不足。让我们探索一个特定的用例并使用自定义公式提供更新的解决方案。

原始尝试及其缺点

您最初共享的代码尝试使用以下方法识别素数基于循环的方法。然而,它在正确识别素数方面面临局限性,特别是由于其除法方法的限制。

优化的公式和实现

要解决这个问题,请考虑实现提供的回复中提到的 isPrime() 函数:

<code class="php">function isPrime($num) {
    //1 is not prime. See: http://en.wikipedia.org/wiki/Prime_number#Primality_of_one
    if($num == 1)
        return false;

    //2 is prime (the only even number that is prime)
    if($num == 2)
        return true;

    /**
     * if the number is divisible by two, then it's not prime and it's no longer
     * needed to check other even numbers
     */
    if($num % 2 == 0) {
        return false;
    }

    /**
     * Checks the odd numbers. If any of them is a factor, then it returns false.
     * The sqrt can be an aproximation, hence just for the sake of
     * security, one rounds it to the next highest integer value.
     */
    $ceil = ceil(sqrt($num));
    for($i = 3; $i <= $ceil; $i = $i + 2) {
        if($num % $i == 0)
            return false;
    }

    return true;
}
登录后复制

将公式合并到循环中

现在,您可以在循环中利用此函数来高效查找素数:

<code class="php">$limit = 100; // Set a limit to the number range you want to check

for ($i = 2; $i <= $limit; $i++) {
    if (isPrime($i)) {
        echo $i . " is a prime number. <br>";
    }
}</code>
登录后复制

通过此更新的方法,您现在可以准确识别指定限制内​​的素数。

以上是如何使用循环和自定义公式有效地找到素数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板