我正在研究Euler问题3的项目,
The prime factors of 13195 are 5, 7, 13 and 29.What is the largest prime factor of the number 600851475143 ?
号
我提出的代码如下:
def q_prime(a):
if a == 2:
return True
elif a < 2:
return False
for i in range(2,a):
if a%i == 0:
return False
else:
return True
def prime_factor(x):
prime_factors =[]
for i in range(1,x):
if q_prime(i) == True and x%i == 0:
prime_factors.append(i)
return prime_factors
调用13195函数,我得到了预期的[5,7,13,29]。我尝试了一些其他的组合,比如1035,它给出了[3,5,23]。但是,当我在600851475143上调用这个函数时,我没有得到输出。此外,我也没有收到错误消息。它运行一段时间,然后简单地重新启动shell
我知道这不是一个优雅的代码,而且我猜暴力迫使我通过这样一个问题为大量的是导致这个问题?到底发生了什么?
考虑到问题的大小,您编写的两个函数都有问题。q_prime