不知道为什么我的代码不适用于Euler 12

问题描述 投票:0回答:1

这些问题要求找到第一个具有500个除数的三角形。我有一个有效的代码来找到有效的因子,另一个有一个能找到三角数的因子,但是当我尝试将它们放到我的代码中时,它没有给出我需要的输出。

factors = []
divisors = 0
num = 1
i = 1


def factor(n):
    global divisors
    step = 2 if n % 2 else 1
    for i in range(1, int(n ** 0.5) + 1, step):
        if n % i == 0:
            factors.append(i)
            factors.append(n // i)
    divisors = len(factors)

while divisors <= 5:
    num += i+1
    i += 1
    factor(num)
else:
    print(num)

我不确定我的代码是否有小错误,或者我对问题的处理方式是否不好。我的代码输出6而不是28。

python
1个回答
0
投票

只需检查您是否未添加相同的数字agian

factors = []
divisors = 0
num = 1
i = 1


def factor(n):
    global divisors
    step = 2 if n % 2 else 1
    for i in range(1, int(n ** 0.5) + 1, step):
        if n % i == 0:
          if (i not in factors):
            factors.append(i)
            factors.append(n // i)
    divisors = len(factors)

while divisors <= 5:
    num += i+1
    i += 1
    factor(num)
    print(factors)
else:
    print(num)
© www.soinside.com 2019 - 2024. All rights reserved.