VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 10511|回复: 6

[讨论] 挑战:求1<=i<=10**12范围内所有数的约数和的和

[复制链接]
发表于 2015-5-10 11:56:01 | 显示全部楼层 |阅读模式
入群题:求1<=i<=10**12范围内所有d(i)的和的末12位,d(i)表示i的正约数的和,i为整数
某Python群的入群题:
本人已经写出算法。
  1. def d(i):
  2.     a = 1
  3.     s = 0
  4.     while a <= i:
  5.         if i % a == 0:
  6.             s = s + a
  7.         a = a + 1
  8.     return s

  9. print("gogogo!")
  10. i = 1
  11. s = 0
  12. import time
  13. time.clock()
  14. while i <= 10**12:
  15.     s = s + d(i)
  16.     i = i + 1
  17. print(str(s)[-12:])
  18. print(time.clock())
复制代码
 楼主| 发表于 2015-5-10 11:56:37 | 显示全部楼层
vbgood的大神,别藏着掖着了,赶紧出来解决问题吧~
回复 支持 反对

使用道具 举报

发表于 2015-5-10 13:01:42 | 显示全部楼层
你这得运行多长时间?
我不懂Python,就用Common Lisp吧:
  1. (defun sdi (num)
  2.            (loop for d from 1 to num sum (* d (floor (/ num d)))))

  3. (format t "~a" (sdi 1000000000000))
复制代码

点评

正解  发表于 2015-5-12 21:53
回复 支持 反对

使用道具 举报

发表于 2015-5-10 15:37:22 | 显示全部楼层
什么群那么高端。
回复 支持 反对

使用道具 举报

发表于 2015-5-10 19:37:49 | 显示全部楼层
依我看这题是数学题而不是编程题,应该在草稿纸上直接推导做出来才对

点评

怎么算啊?我只知道怎么估算,但精确值怎么手算呢?  发表于 2015-5-10 20:00
我想起来了,这题改变求和次序,duang 的一声就出来了 ヾ(*´∀`*)ノ  发表于 2015-5-10 19:51
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-12 11:59:25 | 显示全部楼层
JuncoJet 发表于 2015-5-10 15:37
什么群那么高端。

Python高级编程群。。被这道题拦下了,进不去。55555

点评

我在里面 呵呵哒。群号281329236  发表于 2015-5-12 21:14
回复 支持 反对

使用道具 举报

发表于 2015-5-15 09:16:48 | 显示全部楼层
数论大法么?
不要去求d(i)
而是去求[1,i]之内每个约数出现的次数?
回复 支持 反对

使用道具 举报

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

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-7-2 22:15

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表