📜  查找三角数的序列号(1)

📅  最后修改于: 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。

解法1:数学公式法

由上述公式可知, 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 # 输入的数不是三角数
解法2:暴力枚举法

由于三角数序列具有单调递增的性质,因此可以从小到大遍历,直到找到给定的三角数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。

参考文献
  1. 三角数 - 维基百科
  2. 阶梯型数列 - 维基百科