我正在尝试查找数字的最大素数因子。当使用较小的数字时,代码在IDLE上正确运行,但当我将一个较大的数字(如600851475143)指定给n时,似乎根本不会在屏幕上显示任何内容。为什么?总理分解:不适用于大数?
def isPrime(n):
isPrime = True
for i in range(2,n-1):
if n % i == 0:
isPrime = False
return isPrime
largest = 0
n = 600851475143
for i in range(2,n-1):
if isPrime(i) and n % i == 0:
largest = i
n = n/i
continue
print("The largest prime factor is", largest)
顺便说一句,我正在运行Python 3.3。
============================================== ================================
谢谢大家!
我修好了我原来的代码如下:
def isPrime(n):
for i in range(2,n-1):
if n % i == 0:
return False
return True
largest = 0
n = 600851475143
for i in range(2,n-1):
if isPrime(i) and n % i == 0:
largest = i
if i == n:
break
n = n/i
print("The largest prime factor is", largest)
像nakedfanatic说,他们的代码运行速度更快,而且我编辑稍微:
largest = 0
n = 600851475143
i = 2
while True:
if n % i == 0:
largest = i
if n == i:
# finished
break
n = n/i
else:
i += 1
print("The largest prime factor is", largest)
你只需要尽量检查为开方(N )。任何比这更大的因素都会有一个相应的因子小于那个因子。您可以通过简单的分区 – 2013-09-25 04:00:54
找到较大的一个是不是打印或*未完成*计算? – justhalf