这些问题要求找到第一个具有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。
只需检查您是否未添加相同的数字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)