📜  大于p的最小三角数(1)

📅  最后修改于: 2023-12-03 15:08:11.165000             🧑  作者: Mango

寻找大于p的最小三角数

三角数是指由连续的自然数相加而得到的数字,例如1+2=3,1+2+3=6,1+2+3+4=10等。

本题要求寻找大于给定值p的最小三角数。

思路分析

首先,我们可以列出前若干个三角数,以便了解其规律。

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

观察可发现,第n个三角数为1到n的自然数之和,即:

$T_n = \frac{n(n+1)}{2}$

因此,我们只需从1开始循环计算每个三角数,直到找到第一个大于p的即可。

代码实现
def find_triangle_number(p):
    '''
    寻找大于p的最小三角数
    '''
    n = 1
    t = 1
    while t <= p:
        n += 1
        t = n * (n + 1) // 2
    return t
测试样例
assert find_triangle_number(10) == 15
assert find_triangle_number(20) == 21
assert find_triangle_number(100) == 105
assert find_triangle_number(500) == 528

以上是一个简单的寻找大于p的最小三角数的代码实现,欢迎各位程序员进一步优化和完善。