[英]Efficiency problem or endless for loops - Python
這是我嘗試用 Python 解決Project Euler 的第三個問題的代碼:
13195 的質因數是 5、7、13 和 29。
數字 600851475143 的最大質因數是多少?
出於某種原因,這並沒有給出答案。 我知道有一個double for 循環,效率很低,但我不知道程序是否仍在運行並嘗試計算,或者是否有錯誤。 甚至可能是嵌套 for 循環中的中斷會中斷所有 for 循環。 如何使用此代碼提高效率? 我不是要求直接完全重寫我的代碼,但一點點零碎會很棒。 (還有一些提示......!)
def prime_selector(primed_num):
factors = []
prime_factors = []
for x in range(1, primed_num + 1):
if primed_num % x == 0:
factors.append(x)
for i in factors:
if i > 1:
for j in range(2, i):
if i % j == 0:
break
else:
prime_factors.append(i)
prime_factors.sort(reverse=True)
print(prime_factors[0])
prime_selector(600851475143)
我建議以不同的方式嘗試這個。 例如數字 825。它是 3 5 5*11。 最大的素數是 11。但是你可以用不同的方法得到它。
825不能被2整除,但可以被3整除,所以825/3=275。
275不能被3或4整除,但可以被5整除。275/5=55。
55 又是 5。55/5=11。
11 不能除以任何大於 5 的數,這不是它本身。 因此它是素數。
這是一個提示性的答案。 如果你需要它,我可以給你代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.