欧拉计划寻找除数问题12

2024-06-16 11:49:18 发布

您现在位置:Python中文网/ 问答频道 /正文

三角形数的序列是通过自然数的加法生成的。所以第七个三角形的数字是1+2+3+4+5+6+7=28。前十个任期是:

1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...

让我们列出前七个三角形数字的系数:

 1: 1
 3: 1,3
 6: 1,2,3,6
10: 1,2,5,10
15: 1,3,5,15
21: 1,3,7,21
28: 1,2,4,7,14,28

我们可以看到28是第一个有五个以上除数的三角形数。你知道吗

第一个除数超过五百的三角形的值是多少?你知道吗

我试了以下,我有关于数学问题的问题。为什么我的方法不起作用或太慢?你知道吗

def triangularNumber(number):
    return number*(number+1)/2


def divisorsList(number):
    divisors = []
    for i in range(1,number+1):
        if(number%i == 0):
            divisors.append(i)
    return divisors

while(True):
    n = 10000
    x = int(triangularNumber(n))
    divisors = divisorsList(x)
    if (len(divisors)>500):
        print(x)
        break
    n += 1

Tags: 方法numberreturnifdef序列数字数学
2条回答

我将除数列表函数中的limit改为数字的平方根,然后通过除法找到其他除数。然而,当我意识到自己在while循环中犯了一个非常愚蠢的错误时,情况有了很大的改善。循环总是重置为1000,从而更改已解决的问题。你知道吗

  1. 你最多可以检查除数 sqrt(number)并计算另一个除数,即如果x除以n, 那么n/x是一个除数。然而,这可能需要一个排序 结束。你知道吗
  2. 你可以检查问题 https://www.quora.com/What-is-an-efficient-algorithm-to-find-divisors-of-any-number

相关问题 更多 >