I am LAZY bones? AN ancient AND boring SITE

欧拉工程

咳咳,我做为非正常网民网瘾戒除中心砖家,正式给介绍介绍一下这个欧拉工程
呃。。。还是请我们的校长──lerosua──来介绍吧~下面引自这篇博文

欧拉工程是一个用编程来解决一连串数学问题的项目。发现它对训练数学及编程挺有作用的。网上也有许多人做上面的题目并发布自己的算法。
上面共有261题,分几个等级,一级比一级难。我看了第261题的提交,目前只是22个。完成它绝对是时间及精力及耐力及智力的较量。
于是本人决定将此作为一个项目来做,逐步进阶。
骨头与xiooli同学也并肩作战。
我们解决的问题的源码将会发布在以下svn中。欢迎审阅.
http://nrciz.googlecode.com/svn/trunk/projecteuler

其实,之前(几个月前吧)我就已经做过几题了。可以说,正是因为欧拉工程,我才喜欢上python的,当我看到第一题用一句

sum([n for n in range(1000) if n%3==0 or n%5==0])

就完美地搞定了,是多么地流畅,多么地自然,我就喜欢上了这门语言~
我们现在已经在逐步把很多题目翻译成中文了,所以,大家有空就去这里看看吧~最好是大家都能参与到其中来哦~

最后修改时间: 2009年10月26日 21:42

本文章发表于: 2009年10月26日 21:42 | 所属分类:编程相关. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

17 个评论 关于: “欧拉工程”

  1. Iven 在 2009年10月26日 21:56 说:回复

    最好把中括号去掉~:)

  2. lerosua 在 2009年10月26日 22:15 说:回复

    呃,你真懒 …

  3. Louis Han 在 2009年10月26日 22:28 说:回复

    对啊,中括号有什么意义吗?

    • Iven 在 2009年10月26日 22:33 说:回复

      带中括号是列表解析,不带是迭代。

      • bones7456 在 2009年10月27日 09:17 说:回复

        恩,看来是有一点区别的,去掉中括号速度稍快~学习了~

        >>> timeit.Timer('sum(n for n in range(1000) if n%3==0 or n%5==0)').timeit(100000)
        41.638976097106934
        >>> timeit.Timer('sum([n for n in range(1000) if n%3==0 or n%5==0])').timeit(100000)
        43.963929176330566
  4. zlbruce 在 2009年10月27日 00:18 说:回复

    最近在学haskell,想用haskell做做看
    第一题:sum [ x | x <- [1..999], x `mod` 3 == 0 || x `mod` 5 == 0 ]

  5. LeoWL 在 2009年10月27日 08:11 说:回复

    看看去……

  6. TualatriX 在 2009年10月27日 09:48 说:回复

    骨头!收我为弟子吧!!!

    • bones7456 在 2009年10月27日 10:09 说:回复

      哈,那你来当“叫兽”吧~

  7. delectate 在 2009年10月27日 11:41 说:回复

    真漂亮!

    python好强大

  8. shellex 在 2009年10月28日 18:29 说:回复

    这个…太暴力了。
    其实只要3的倍数的和加上5的倍数的和然后减去重复的部分也就是15的倍数的和就是答案了,不用写程序..

  9. xiooli 在 2009年10月29日 11:34 说:回复

    呵呵,喜欢骨头电击治疗的童鞋请尽快加入骨头的网瘾戒除中心哦

    • bones7456 在 2009年10月29日 12:27 说:回复

      别诬陷人啊,那是羊叫兽干的事情,本砖家绝不使用点击,嘿嘿。。

  10. shenfeng 在 2009年11月07日 22:09 说:回复

    呵呵多加15倍数的数

  11. Tusooa 在 2010年06月23日 17:01 说:回复

    也来打个酱油:
    48

    #!/usr/bin/bc
    sum=0
    for(i=1;i<=1000;i++)
    sum=sum+i^i
    do
    sum%10^10

    呵呵。
    结果是9110846700

  12. flyingzl 在 2010年07月10日 23:53 说:回复

    恩。不错。。不过看了下那个算法,更好。。不用遍历。,而且效率很高

    target=1000000000000000

    def getRs(n):
    p=target/n
    return n*p*(p+1)/2

    print getRs(3)+getRs(5)-getRs(15)

    既然要求是3和5的倍数。。。比如3+6+9就可以为3*(1+2+3+…+n/3),还有就是5*(1+2+3+…+n/5)….

    减去重复的就是3*5=15

  13. tusooa 在 2010年07月16日 23:37 说:回复

    不懂。为何有bc之简便(对于大数运算),还用c与蟒?

发表评论