前段时间痴迷解欧拉计划题目,一个多月来,陆陆续续解了100多题。乐在其中,不能自拔。 欧拉计划是一系列有挑战性的数学与计算机编程题;要解开它们,需要的不止是数学知识:尽管数学能够帮助你找到一些优雅而有效的方法,大多数题目仍需要借助计算机和编程技巧来完成解答。
创立欧拉计划的初衷,以及不断维持其运行的动力,在于为好奇的头脑提供一个平台,使他们能够在有趣愉悦的氛围中,探索未知领域,学习新的知识。
欧拉计划的题目难度不一,对于大多数人来说,解题就是一个逐渐学习的过程。也就是说,每当你解开一个题目,你将会了解一些新的知识,从而帮助你着手解决以前无从下手的题目。因此,任何有决心的参与者,即使进展再缓慢,也一定能逐一解开每一道题。
感觉用BASIC处理纯数学问题非常弱,网站用Python和Java的人最多。但用Basic的也有解了500+的大牛存在。
有兴趣的可以去自行解题http://pe-cn.github.io/,英语过关的可以直接去原网站 https://projecteuler.net/archives 注册登录刷成就。
先上第一题及代码。
3的倍数和5的倍数如果我们列出10以内所有3或5的倍数,我们将得到3、5、6和9,这些数的和是23。 求1000以内所有3或5的倍数的和。
- Sub problem1() '累加1000以下所有3或5的倍数(结果为233168)
- tm = Timer
- Nmax = 999
- For i = 1 To Nmax
- If i Mod 3 = 0 Or i Mod 5 = 0 Then s = s + i
- Next
- Debug.Print s, Timer - tm
- End Sub
- Sub problem1a() '当nmax巨大时,比上面代码速度提高10倍
- tm = Timer
- Nmax = 999
- For i = 3 To Nmax Step 3
- s = s + i
- Next
- For i = 5 To Nmax Step 5
- s = s + i
- Next
- For i = 15 To Nmax Step 15
- s = s - i
- Next
- Debug.Print s, Timer - tm
- End Sub
复制代码
|