24小时热门版块排行榜    

查看: 4033  |  回复: 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所有的数的整除的最小的正数是多少呢?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+3): 鼓励交流! 2011-05-12 19:11:36
余泽成(程序强帖+1): 2011-05-12 19:12:13
CODE:
%% evenly divided by 1:20
% Elapsed time is 173.211097 seconds.
% ans =
%    232792560
function result = euler5()
tic;
flag = 0;
result = 2520; % 能被1-20整除,肯定比能被1-10整除的2520大
while flag==0
    result = result+10; % 能被10整除,所以每次增加10
    flag = ~any(mod(result,2:20)); % 检测2-20,如果全部可以整除,改变flag结束循环
end
toc;
end

效率有点低,170多秒啊,
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2011-05-12 16:36:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+2): 鼓励讨论! 2011-05-13 21:13:19
引用回帖:
Originally posted by holmescn at 2011-05-12 16:45:10:
1. 为什么不用all,要用any呢?
2. 问题很简单啊,算法太粗暴了。

all需要测试全部能整除,2:20都会计算
~any只要有2:20任意一个不整除,就break,
只有在全部整除那个数时,才会2:20全部计算一次
应该会比all快,我实际测试也是~any快过all.
不过这是我的理解,math works没有相关说明

这个问题好像没有其他办法,哈哈,只能粗暴解决

[ Last edited by libralibra on 2011-5-12 at 19:21 ]
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
5楼2011-05-12 19:10:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
微尘、梦想(金币+1): 介个…… 2011-05-14 19:31:40
哈哈,分析加程序,那就简单死了
还是matlab的,基于上面诸位的分析,
整除1-20,其实就是1-20的最小公倍数,计算时可以精简:
1-20只需要求[2,3,4,5,6,7,11,13,17,19]的最小公倍数即可
其余的
1不用计算
8 = 2*4
9 = 3*3(第二个3来自6=2*3)
10 = 2*5
12 = 3*4
14 = 2*7
16 = 2*8
18 = 2*9 = 2*3*3(第二个3来自6=2*3)
20 = 2*10 = 2*5*2(第二个2来自4=2*2)
CODE:
tic;disp(prod([2,3,4,5,6,7,11,13,17,19]));toc;
   232792560
Elapsed time is 0.000012 seconds.

[ Last edited by libralibra on 2011-5-14 at 01:08 ]
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
13楼2011-05-13 21:20:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 holmescn 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见