读书笔记之编程之美 - 2.20 程序理解和时间分析

问题1:

代码的关键是那个break,如果找到3个不能整除的数,内层for循环就退出了,必须正好从30个数里面找到2个数不能整除,而且这两个数还要连续。所以问题一的答案是,某个数不能且仅不能被2~31之间连续的两个数整除

问题2:

这个问题先看看是否任意连续两个数都可以作为结果用到的那两个数。

分析rg[]中15 = 3 x 5这个数,如果某数可以被3和5整除,那么也一定能被15整除,因此15不可能是连续2个数中间的一个,例如30可以被3和5整除,则一定可以被15整除,这样15就不会是结果可以用的那两个不可以整除的数。分析rg中的25 = 5 x 5,一个数可以被5整除,却不一定能被25整除,例如i = 30这个数。所以满足条件的数只能是素数或者完全平方、多次方这样的数。也就是:

2 3 4 5  7 8 9 11 13 16 17 19 23 25 27 29 31

其中连续的有,(2,3)(3,4)(4,5)(7,8)(8,9)(16,17)

所要的结果就是除了这其中两个数的公倍数,而最小的公倍数当然是对于(16,17)这两个数来说的。

不过求最小公倍数也得费半天功夫,我算的结果是2123581660200

问题3:

由于不知道%指令周期是多少,暂时不想这个问题了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值