首頁 > 後端開發 > 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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板