Python 查找素因子
問題:
兩部分問題:
問題:為什麼這個演算法比簡單測試每個數字的演算法更快?
<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中文網其他相關文章!