红宝石挖掘工

Dig ruby with Pickaxe

ProjectEuler_Problem1

xavier posted @ 2009年8月16日 00:27 in ProjectEuler with tags projecteuler ruby , 1568 阅读

projecteuler.net

这上面的题一开始很简单,但越来越难,到后面直接看不懂题了。所以做到哪算哪吧

先来第一题

Problem1 : Find the sum of all the multiples of 3 or 5 below 1000.

                  找出1000以下所有3的倍数以及5的倍数的和

没什么可分析的了,直接上代码

 

#一行就能解决
(0..999).select { |x| (x % 3 == 0) or (x % 5 == 0) }.reduce(:+)

 

 

注意reduce方法是1.8.7才有的

如果1.8.6以下要这么写

 

sum = 0 
(0..999).select { |x| (x % 3 == 0) or (x % 5 == 0) }。
inject(|sum,n| sum += n)
puts sum

 

 还有一种算法就是分别求三的倍数的和以及5的倍数的和,把他们加一块再减15的倍数的和

会更快,但更长

 

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter