📅  最后修改于: 2023-12-03 15:40:22.745000             🧑  作者: Mango
三角数是形如1, 3, 6, 10, 15, 21, 28, 36, ...的数列,其中第n个三角数T_n表示将n个连续正整数相加所得到的和,即 T_n = 1 + 2 + 3 + ... + n
例如,T_4 = 1 + 2 + 3 + 4 = 10,因此10是第4个三角数。
要查找一个给定的三角数的序列号,即给定T_n,需要求解n。
由上述公式可知, T_n = n(n+1)/2
可以通过解一元二次方程来求解n,具体方法如下:
import math
def find_triangular_num_index(T_n):
n = int((-1 + math.sqrt(1 + 8*T_n))/2)
if n*(n+1)/2 == T_n:
return n
else:
return -1 # 输入的数不是三角数
由于三角数序列具有单调递增的性质,因此可以从小到大遍历,直到找到给定的三角数T_n为止。
def find_triangular_num_index(T_n):
i = 1
while True:
if T_n == i*(i+1)//2:
return i
elif T_n < i*(i+1)//2:
return -1
i += 1
以上两种方法分别使用了数学公式法和暴力枚举法来查找给定三角数的序列号。具体选择哪种方法取决于具体情况。
需要注意的是,对于非三角数作为输入的情况,两种方法均返回-1。