def prime(x):
for a in range(2, x):
if x%a == 0:
break
else:
return x
num = 0
largest = 0
for i in range(2, 600851475143):
if 600851475143%i == 0:
num = prime(i)
if largest < num:
largest = num
print(largest)
我得到了答案,但是它没有成功运行我得到了这个错误
'<' not supported between instances of 'int' and 'NoneType'
你能告诉我密码有什么问题吗? 我想不出来。
当使用非素数调用prime
时,它从不执行return
语句,因此返回none
。
如果以break停止,prime返回None。
可以使用return0代替break。 这不会出现相同的错误,也不会更改最大值,因为largest>=0。
但我猜这是一个非常低效的方法来获得最大的素因子。 分解因子,然后寻找最大因子可能会更快。