You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.12下无列表判断三角数的方法求助(输入上限10^8)

判断三角数的无列表依赖方法(Python 3.12)

数学原理

三角数的定义是第n个三角数为 ( T_n = \frac{n(n+1)}{2} )(n为非负整数)。要判断一个数x是否为三角数,可通过公式变形推导:
将定义式整理为 ( n^2 + n - 2x = 0 ),这是关于n的二次方程。根据求根规则,需满足两个条件:

  1. 判别式 ( D = 1 + 8x ) 必须是完全平方数;
  2. 方程的非负根 ( n = \frac{\sqrt{D} - 1}{2} ) 必须是整数。

实现代码

import math

def is_triangular(x):
    if x < 0:
        return False
    discriminant = 8 * x + 1
    sqrt_d = math.isqrt(discriminant)  # 整数平方根函数,避免浮点精度误差
    if sqrt_d * sqrt_d != discriminant:
        return False
    return (sqrt_d - 1) % 2 == 0

def triangular_checker(num_list):
    result_chars = []
    for num in num_list:
        result_chars.append("1" if is_triangular(num) else "0")
    return "".join(result_chars)

测试示例

# 测试输入1
print(triangular_checker([3,4,6,55,345]))  # 输出:"10110"
# 测试输入2
print(triangular_checker([0,1,2,5]))  # 输出:"1100"

方法优势

无需预存储任何三角数列表,通过纯数学计算直接判断,Python的整数运算特性支持处理上限为 ( 10^8 ) 甚至更大的输入,完全避免了预定义列表的范围限制问题。

内容的提问来源于stack exchange,提问作者Newbie Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 07:27:13