Project Euler 005
問題5
1から20のどれでも割り切れる数を求める。
ようするに、最小公倍数てことでしょ。Gaucheで。
(lcm 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20)
これでは話が展開しないので。
^(1 to: 20) inject: 1 into: [ :tmp :each | | gcd next | gcd := tmp gcd: each. next := gcd >= 1 ifTrue: [ tmp * (each / gcd) ] ifFalse: [ tmp ]. next ].
というところまで考えて、wikipediaの記述を見るとごちゃごちゃしなくてもいいみたいな。
http://ja.wikipedia.org/wiki/%E6%9C%80%E5%B0%8F%E5%85%AC%E5%80%8D%E6%95%B0
^(1 to: 20) inject: 1 into: [ :tmp :each | tmp lcm: each ].
あれー、こんな感じのコードではうまく動かなかったから答えを求めた当初はGauche使ったんじゃなかったかなー。
ま、いいか。