繁体   English   中英

我的python程序不会在终端中执行或显示任何内容

[英]My python program won't execute or show anything in the terminal

所以我试图解决一个项目欧拉问题,要求我们找到最大的素数因子600851475143.这是我的代码:

factors = [i for i in range(1,600851475144) if 600851475143%i is 0]
prime_factors = []
for num in factors:
    factors_of_num = [i for i in range(1, num+1) if num%i is 0]
    if factors_of_num == [1, num]:
        prime_factors.append(num)
print(max(prime_factors))

问题是这个代码不会像这样大量运行。 怎么可以\\我得到这个工作?

你的程序正在执行,但是range(1, 600851475144)只是花了很长时间才开始运行rrrrrrrrrrrrrrrrrrrrr。 有更好的方法来获得素数因子,而不是首先单独检查每个数字是否为除数然后检查哪些是素数。

首先,对于每对除数p * q = npq必须<= sqrt(n) ,所以你实际上只需要检查range(1, 775147)的数字range(1, 775147)来得到一个部分这些对,并免费获得另一对。 仅此一项就足以让您的计划及时完成。 但你仍然得到所有的除数,然后必须检查其中哪些是素数。

接下来,你实际上不必得到那些除数的所有素因子来确定它们是否是素数:你可以在找到第一个非原始因子时立即停止使用any 在这里,测试高达sqrt(num)就足够了。 (另外,你可以从最大的除数开始,所以你可以在找到第一个除数后立即停止循环。)


或者,一旦找到除数,将目标数除以该除数,直到它不再被除数,然后继续使用新的较小目标数和下一个可能的除数。 这样,所有的除数都保证是素数(否则数字已经被素因子减少了),并且你还需要更少的测试(除非数字本身是素数)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM