📅  最后修改于: 2023-12-03 15:08:11.165000             🧑  作者: Mango
三角数是指由连续的自然数相加而得到的数字,例如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的最小三角数的代码实现,欢迎各位程序员进一步优化和完善。