鱼C论坛

 找回密码
 立即注册
查看: 11516|回复: 39

题目12:第一个拥有超过500个约数的三角形数是多少?

[复制链接]
发表于 2020-10-6 15:59:53 | 显示全部楼层
  1. '''三角形数序列是由对自然数的连加构造而成的。所以第七个三角形数是 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. 那么三角形数序列中的前十个是:
  2. 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
  3. 下面我们列出前七个三角形数的约数:
  4. 1: 1
  5. 3: 1,3
  6. 6: 1,2,3,6
  7. 10: 1,2,5,10
  8. 15: 1,3,5,15
  9. 21: 1,3,7,21
  10. 28: 1,2,4,7,14,28
  11. 可以看出 28 是第一个拥有超过 5 个约数的三角形数。
  12. 那么第一个拥有超过 500 个约数的三角形数是多少?'''

  13. def trinum(num_of_divisors):
  14.     end_num = 1
  15.     sum = 0
  16.     Num_of_divisors = 0

  17.     while Num_of_divisors < num_of_divisors:
  18.         Num_of_divisors = 0
  19.         sum += end_num

  20.         if math.sqrt(sum) == int(math.sqrt(sum)):
  21.             Num_of_divisors += 1

  22.         for divisors in range(1,int(math.sqrt(sum))):
  23.             if sum % divisors == 0:
  24.                 Num_of_divisors += 2

  25.         end_num += 1

  26.     print("第一个拥有超过500个约数的三角形数是: %d" %sum)
  27.     print("一共有%d个约数" %Num_of_divisors)

  28. start_trinum = time.time()
  29. trinum(500)
  30. time_trinum = time.time() - start_trinum
  31. print("%f秒" %time_trinum)
复制代码



第一个拥有超过500个约数的三角形数是: 76576500
一共有576个约数
3.206136秒
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-26 04:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表