【发布时间】:2013-12-14 09:11:14
【问题描述】:
我在http://projecteuler.net/上查看问题
第三个问题如下:
13195 的质因数是 5、7、13 和 29。什么是最大的 数字 600851475143 的素数?
我的解决方案代码如下。但它太慢了,我认为需要数周才能完成。 我该如何改进它?还是 Python 本身解决这个问题的速度太慢了?
def IsPrime(num):
if num < 2:
return False
if num == 2:
return True
else:
for div in range(2,num):
if num % div == 0:
return False
return True
GetInput = int (input ("Enter the number: "))
PrimeDivisors = []
for i in range(GetInput, 1, -1):
print(i)
if GetInput % i == 0 and IsPrime(i) is True:
PrimeDivisors.append(i)
break
else:
continue
print(PrimeDivisors)
print("The greatest prime divisor is:", max(PrimeDivisors))
【问题讨论】:
-
对于初学者,您只需要测试直到您要从中搜索因子的数字的平方根。
-
@shuttle87 你只需要测试奇数(除了2)。
-
@shuttle87,10 的最大素数是 5,大于 sqrt(10)(3.16,aprox)。 33 的最大素数是 11,大于 sqrt(33)(5.74,aprox)。我猜你是把这和这个规定混为一谈了
标签: python python-3.x