| 查看: 4021 | 回复: 20 | |||
| 本帖产生 6 个 程序强帖 ,点击这里进行查看 | |||
holmescn金虫 (正式写手)
|
[交流]
Euler 工程 第五题:能被1到20所有的数都整除的最小正数 已有11人参与
|
||
|
2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder. What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20? 2520是一个能被1到10中的每个数都除尽的最小的数。 那么能被1到20所有的数的整除的最小的正数是多少呢? |
» 猜你喜欢
磺酰氟产物,毕不了业了!
已经有4人回复
论文终于录用啦!满足毕业条件了
已经有16人回复
求个博导看看
已经有19人回复
投稿Elsevier的杂志(返修),总是在选择OA和subscription界面被踢皮球
已经有8人回复
» 本主题相关价值贴推荐,对您同样有帮助:
今年青年基金需要所有参与者到基金委科研在线上确认吗?
已经有21人回复
基本涵盖了药学实验中所有涉及到的动物的种系、来源,很全。
已经有70人回复
Euler 工程 第廿九题:有多少不同的项?
已经有30人回复
Euler 工程 第十五题:从左上角到右下角有多少条路?
已经有5人回复
为什么要进行能量最小化?
已经有7人回复
Euler 工程 第14题:找最长的数列
已经有9人回复
Euler 工程 第二题:Fibonacci数列中小于4百万的偶数的和
已经有8人回复
origen线性拟合呈现单调递减趋势,那么拟合系数应该写正数还是负数呢
已经有5人回复
【转帖】最小和最廉价的超级计算机,DIY的
已经有14人回复
libralibra
至尊木虫 (著名写手)
骠骑将军
- 程序强帖: 40
- 应助: 817 (博后)
- 金币: 12914.1
- 红花: 64
- 帖子: 2238
- 在线: 287.3小时
- 虫号: 696514
- 注册: 2009-02-05
- 专业: 计算机软件

2楼2011-05-12 16:36:07
holmescn
金虫 (正式写手)
- 程序强帖: 37
- 应助: 1 (幼儿园)
- 金币: 1918.8
- 散金: 275
- 红花: 1
- 帖子: 699
- 在线: 102.6小时
- 虫号: 913482
- 注册: 2009-11-26
- 性别: GG
- 专业: 凝聚态物性 II :电子结构
3楼2011-05-12 16:45:10
微尘、梦想
木虫 (知名作家)
- 程序强帖: 6
- 应助: 2 (幼儿园)
- 贵宾: 0.353
- 金币: 4757.9
- 散金: 3089
- 红花: 31
- 沙发: 247
- 帖子: 8788
- 在线: 1125小时
- 虫号: 1203290
- 注册: 2011-02-14
- 专业: 制造系统与自动化

4楼2011-05-12 17:19:14
libralibra
至尊木虫 (著名写手)
骠骑将军
- 程序强帖: 40
- 应助: 817 (博后)
- 金币: 12914.1
- 红花: 64
- 帖子: 2238
- 在线: 287.3小时
- 虫号: 696514
- 注册: 2009-02-05
- 专业: 计算机软件

5楼2011-05-12 19:10:13
微尘、梦想
木虫 (知名作家)
- 程序强帖: 6
- 应助: 2 (幼儿园)
- 贵宾: 0.353
- 金币: 4757.9
- 散金: 3089
- 红花: 31
- 沙发: 247
- 帖子: 8788
- 在线: 1125小时
- 虫号: 1203290
- 注册: 2011-02-14
- 专业: 制造系统与自动化
★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+3, 程序强帖+1): 鼓励讨论! 2011-05-13 21:13:39
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+3, 程序强帖+1): 鼓励讨论! 2011-05-13 21:13:39
|
有感于2楼的想法,改进了一下算法,求出了能被1到20所有的数的整除的最小的正数,其运算时间不到1秒,其结果是:232792560 说明:虽然静态全局变量并不提倡使用,但用在这里,恰到好处。 算法:能被前n个数整除的最小正数x,n+1除以x与n+1的公约数,得结果b,x乘b即是能被前n+1个数整除的最小正数 ps:不能求出能被1到30所有的数的整除的最小的正数,因为会产生数据溢出问题,最大只能求到22,但算法是正确的。 [ Last edited by 微尘、梦想 on 2011-5-13 at 07:56 ] |

6楼2011-05-12 21:35:50
zzy870720z
荣誉版主 (文坛精英)
- 程序强帖: 1
- 应助: 47 (小学生)
- 贵宾: 9.05
- 金币: 30914.3
- 散金: 5613
- 红花: 68
- 沙发: 99
- 帖子: 12592
- 在线: 23567.6小时
- 虫号: 745488
- 注册: 2009-04-10
- 性别: GG
- 专业: 凝聚态物性I:结构、力学和
- 管辖: 分子模拟

7楼2011-05-12 22:36:14
holmescn
金虫 (正式写手)
- 程序强帖: 37
- 应助: 1 (幼儿园)
- 金币: 1918.8
- 散金: 275
- 红花: 1
- 帖子: 699
- 在线: 102.6小时
- 虫号: 913482
- 注册: 2009-11-26
- 性别: GG
- 专业: 凝聚态物性 II :电子结构
★ ★ ★
余泽成(金币+3): 鼓励讨论! 2011-05-13 21:14:16
微尘、梦想(程序强帖+1): 2011-05-14 19:29:31
余泽成(金币+3): 鼓励讨论! 2011-05-13 21:14:16
微尘、梦想(程序强帖+1): 2011-05-14 19:29:31
|
OK,贴算法了! 本题其实在数学上很简单,能被1到20所有的数都整除的最小正数,当然就是1到20这20个数的最小公倍数。所以用最小公倍数算法就最简单了。关于最小公倍数算法,请自行看书或查维基百科。 算法说明: 求最小公倍数,当然就是把所有合数的质因子,去掉公因子,然后再乘起来就OK了。 下面给出三种语言的实现: Matlab: Fortran: C: 当然我这里偷个个懒,就是直接给出了小于20的质数。不过,这个质数列表的生成也不难,参考Euler 工程 第三题的算法。 如果要给出N个数的最小公倍数。只要给个Numbers的列表就可以了。我想这个算法还是很实用的。 [ Last edited by holmescn on 2011-5-13 at 12:51 ] |
8楼2011-05-13 11:31:07
★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+3, 程序强帖+1): 鼓励讨论! 2011-05-13 21:14:37
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+3, 程序强帖+1): 鼓励讨论! 2011-05-13 21:14:37
|
我觉得三层循环还是多了,两层循环就可以 第一步是分离数表,将质数和非质数分离,质数不超过lgn个,所以可以在O(lgn)时间内解决 第二步是从质数表中,进行叠乘运算,找出所能叠到的最大值。这么做的原因是,质数代表了所有的公因子,而公倍数包含公因子的乘方,这个循环也可以在O(lgn)的时间上限完成。 下面是手算演示: 1-10的素数表: 2,3,5,7 叠乘:2*2*2=8,到达临界条件,取得4, 3*3=9,到达临界条件,取得3 最终叠乘:2*3*5*7*3*4=2520 ---------------------------------------------------------------- 1-20的素数表:2,3,5,7,11,13,17,19 叠乘:2*2*2*2=16,剔除2取得8 3*3=9,到达临街条件,取得3 最终叠乘:2*3*5*7*11*13*17*19*3*8=232792560 |

9楼2011-05-13 19:58:36
ming.su
银虫 (初入文坛)
- 应助: 1 (幼儿园)
- 金币: 449.9
- 散金: 10
- 帖子: 33
- 在线: 16.1小时
- 虫号: 914146
- 注册: 2009-11-27
- 性别: GG
- 专业: 环境微生物学

10楼2011-05-13 20:29:02







回复此楼
