首页 > 解决方案 > 试图找到最大的主要因素,但我不知道出了什么问题。请给我建议

问题描述

我不知道出了什么问题。我试图找到最大的主要因素

import math
def getfactor(num):
    factors = []
    for i in range(2,int((math.sqrt(num)))+1):
        if num % i == 0:
            factors.append(i)

    return factors

def determineprime(num):
    factor = []
    for i in range(2,num + 1):
        if num % i == 0:
            factor.append(i)
    if len(factor) == 1:
        return True
    else:
        return False

factors = getfactor(600851475143)
primes = []
print(factors)
for i in factors:
    determineprime(i)
    if i:
        primes.append(i)
print(primes[-1])

标签: python

解决方案


改变:

    determineprime(i)
    if i:
        primes.append(i)

至:

    if determineprime(i):
        primes.append(i)

原始版本是调用determineprime(i),丢弃结果,并始终附加iprimes. i更正后的版本仅在返回 trueprimes时才会追加。determineprime(i)

更新:正如 Mark Tolonen 指出的,getfactor如果它的参数是素数,将返回一个空列表。在这种情况下,数字本身应该作为列表的唯一元素返回。它可以在返回之前检查列表是否为空,如果是,则附加数字本身,因为在这种情况下它必须是素数。


推荐阅读