暴力演算法如何找到數字的最大素因數,為什麼它比測試每個數字更快?

Barbara Streisand
發布: 2024-11-08 02:17:02
原創
980 人瀏覽過

How does a brute-force algorithm find the largest prime factor of a number, and why is it faster than testing every number?

Python 查找素因子

問題:

兩部分問題:

問題:
  1. 兩部分問題:
  2. 你能解釋一下尋找數字最大質因數的暴力演算法是如何運作的嗎?

為什麼這個演算法比簡單測試每個數字的演算法更快?

<code class="python">n = 600851475143
i = 2
while i * i < n:
    while n % i == 0:
        n = n / i
    i = i + 1

print(n)</code>
登入後複製
程式碼範例:

答案:

答案:

答案:

1. :

給定的演算法透過迭代從2 到給定數字n 的平方根的所有數字,使用強力來找到最大素因數。對於每個數字 i,它檢查是否整除 n 沒有餘數。如果是,它會重複將 n 除以 i,直到 n 不再能被 i 整除。然後它將 i 加 1 並繼續該過程。最大的質因數將是 n.

<code class="python">def largest_prime_factor(n):
    i = 2
    while i * i <= n:
        if n % i == 0:
            n //= i
        else:
            i += 1
    return n</code>
登入後複製
2 的最終值。為什麼演算法更快:

給定的演算法比簡單地測試每個數字更快,因為它利用了數字的任何質因數都小於或等於其平方根的事實。透過僅迭代到 n 的平方根,演算法減少了要檢查的潛在候選者的數量,從而顯著提高了效率。 改進的演算法:提供的程式碼範例存在一些問題,導致它無法在所有情況下正確找到最大素因數。此演算法的修正版本是:演算法可以正確找到最大的素因數,即使對於完全平方數和具有重複素數因數的數字也是如此。

以上是暴力演算法如何找到數字的最大素因數,為什麼它比測試每個數字更快?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!