【发布时间】:2017-02-16 02:39:36
【问题描述】:
我是一个初学者,我正在做第三个问题,这是关于找到 600851475143 的最大素数的问题,我得到这个错误:
Python int 太大,无法转换为 C long
plist = [2]
def primes(min, max):
if 2 >= min:
yield 2
for i in xrange(3, max, 2):
for p in plist:
if i % p == 0 or p * p > i:
break
if i % p:
plist.append(i)
if i >= min:
yield i
def factors(number):
for prime in primes(2, number):
if number % prime == 0:
number /= prime
yield prime
if number == 1:
break
a = 600851475143
print max(factors(a))
【问题讨论】:
-
你在哪里转换成
long? -
我没有,我正在使用 Windows PowerShell 运行该脚本,显示的错误就在它本身
-
@WillemVanOnsem 我认为他们没有,
xrange显然有。
标签: python python-2.7