【发布时间】:2019-11-06 20:31:35
【问题描述】:
我正在尝试从该站点https://projecteuler.net/problem=3 解决问题 3,它的调用如下:''13195 的质因数是 5、7、13 和 29。数字 600851475143 的最大质因数是多少? '' 为什么,当我尝试使用大数字(超过 1000000)运行我的代码时 - 它不会在屏幕上打印?我该如何解决这个问题并解决这个任务?
我有一些正确的工作代码,即使用小输入参数(如 13195)工作。但是,当我尝试使用大参数(如 600851475143)获取答案并运行此代码时,它不会打印任何内容。
def is_it_prime(x): # function check: is it number a prime or not and return True or False?
if x != 1:
i = int(x/2)
else:
i = 1 # x == 1 It is a simple case, where is argument - it is a prime number
while i != 1:
if x % i == 0: # This number isn't prime
return False
i -= 1
return True # Done! We find largest prime number
def largest_prime(x): # function check argument on whole divide availible
i = int(x/2)
while True:
if x % i == 0: # argument have whole divide
if is_it_prime(i) == True:
break
i -=1
return i # It is the largest prime factor
print(largest_prime(600851475143))
--------------------------------------------------------
>>>
【问题讨论】:
-
您是否等待它完成?按照设计,这是一个非常昂贵的计算。除非您使用非常有效的方法,否则这将需要一段时间。把一些
prints 放在那里看看发生了什么。 -
使用更好的素数测试算法。解决项目欧拉问题的基础知识
-
谢谢。是的,我已经等了一晚来计算这段代码 - 但我没有回答。
-
感谢所有cmets!我会考虑我的算法并重写这段代码。在此之后,我将返回此页面并为您提供此问题的反向链接。祝你有美好的一天!
-
为什么我的帖子需要-1票?
标签: python-3.x