簡體   English   中英

效率問題或無限循環 - Python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM