提问者:小点点

用python求数的最大素因子


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'

你能告诉我密码有什么问题吗? 我想不出来。


共2个答案

匿名用户

当使用非素数调用prime时,它从不执行return语句,因此返回none

匿名用户

如果以break停止,prime返回None。

可以使用return0代替break。 这不会出现相同的错误,也不会更改最大值,因为largest>=0。

但我猜这是一个非常低效的方法来获得最大的素因子。 分解因子,然后寻找最大因子可能会更快。