开始欧拉工程之旅

欧拉工程是一个在线解题网站,目前网站共有608道题,题目以各类数学问题为主,通常需要结合一定的数学与编程知识,写出适当的程序求解问题。按照网站的提示,大部分问题应能在普通电脑上在一分钟内得到答案,如果不能,则可能是你的算法需要进一步优化。欧拉工程是一个锻炼个人算法技能与数学知识的绝佳工具,在解决问题的过程中,你不仅可以了解一些以前不甚了了的数学知识,更可以将这种数学知识与算法设计结合起来,从而得到不断优化的算法。

网站上在存档一栏按题目的难易程度从易到难列出了所有题目,一般而言,前一百道题相对于之后的题要较为容易,这从解出题目的人的数量就可以看出,如在2017年8月5日,解出第一道题的人数为677980人,而第608道题目前只有93人解出,考虑到全球人口基数,可以说明欧拉工程靠后的题目的难度是非常大的。

在编程语言方面,欧拉工程并不对你的语言进行限制,你可以使用任何你喜欢的语言,只要最后能得到正确答案即可。我的主力编程语言是python,而这也是欧拉工程解题语言中最常用的语言之一。python由于其优秀的设计,以及诸如列表推导式,lambda表达式等可口的语法糖,众多易用的外部库,通常只需要很少数量的代码,就可以很优雅的解决一些复杂的问题。在解决问题后,你也可以看到之前解决这些问题的人共享的解题思路与答案,发现自己算法的不足之处。你可能会看到很多算法大牛的身影,他们对于算法设计,常能匠心独运,令人叹服。

自2017年夏季始,我在工作之余尝试解答一些欧拉工程中的问题,收获很多,恐怕很难找到比解答数学题更能打发时间的业余爱好了。我准备将这项业余爱好持续下去,我会追求尽量对每道题给出最优的解法,并给出相应的解题思路。在以下列出的解题思路分析文件中,我将题目翻译成了中文,给出了我的解题思路和对应的代码。我的代码也可以在我的Git Hub项目库中找到。如果对我的解题思路有疑惑或者需要指出其中的错误的,请在我的项目库评论,发ISSUE或提PR,我会尽量积极回复。以下是我的解题代码以及对应的解题思路分析: