文章目录
一、三角数是什么
首先需要明白什么是三角数。三角数即正整数前n项和: 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78,..n(n+1)/2 ,从1+2+3+…+n谈起,例如:在建筑工地上堆积许多圆木条,从侧面看去它们堆积成三角形的样子。
二、使用步骤
1.定义函数计算三角数
代码如下:
def t(n):
return (1 + n) * n /2
2.思路:
思路:暴力判断:利用循环判断三角数是否能将该数整除(判断值该三角数),若可以则相加。时间复杂度是O(n);改进:将循环改至判断到三角数的平方根(取整)+1时间复杂度为O(n**/2);其次明白怎样判断一个数约束的个数。
如果一个数不是素数是合数, 那么一定可以由两个自然数相乘得到, 其中一个大于或等于它的平方根,一个小于或等于它的平方根。
利用这个方法我们只需呀判断平方根前的部分,如果是约数则+2即可。
3.代码:
n = 1
counter = 0 #计算约数个数
while counter <= 500:
counter = 2 #1和t(n)
n += 1
for i in range(2,(int)(math.sqrt(t(n)))+1):
if t(n)%i==0:
counter+=2
print(int(t(n)))
总结
懂得如果一个数不是素数是合数, 那么一定可以由两个自然数相乘得到, 其中一个大于或等于它的平方根,一个小于或等于它的平方根之后时间复杂度大大降低,为O(n**1/2),效率加快不少
最后:如果有其他思路的小伙伴可以在评论区留言一起讨论。