|
发表于 2020-10-6 15:59:53
|
显示全部楼层
- '''三角形数序列是由对自然数的连加构造而成的。所以第七个三角形数是 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. 那么三角形数序列中的前十个是:
- 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
- 下面我们列出前七个三角形数的约数:
- 1: 1
- 3: 1,3
- 6: 1,2,3,6
- 10: 1,2,5,10
- 15: 1,3,5,15
- 21: 1,3,7,21
- 28: 1,2,4,7,14,28
- 可以看出 28 是第一个拥有超过 5 个约数的三角形数。
- 那么第一个拥有超过 500 个约数的三角形数是多少?'''
- def trinum(num_of_divisors):
- end_num = 1
- sum = 0
- Num_of_divisors = 0
- while Num_of_divisors < num_of_divisors:
- Num_of_divisors = 0
- sum += end_num
- if math.sqrt(sum) == int(math.sqrt(sum)):
- Num_of_divisors += 1
- for divisors in range(1,int(math.sqrt(sum))):
- if sum % divisors == 0:
- Num_of_divisors += 2
- end_num += 1
- print("第一个拥有超过500个约数的三角形数是: %d" %sum)
- print("一共有%d个约数" %Num_of_divisors)
- start_trinum = time.time()
- trinum(500)
- time_trinum = time.time() - start_trinum
- print("%f秒" %time_trinum)
复制代码
第一个拥有超过500个约数的三角形数是: 76576500
一共有576个约数
3.206136秒
|
|