CoffeeScriptでProject Euler #10

問題文

Problem 10

10以下の素数の和は2 + 3 + 5 + 7 = 17である.
200万以下の全ての素数の和を計算しなさい.

Solution

ダーティなコード。「上手い記述を検討します」とはなんだったのか。
時間もかかるしよくない…

is_prime ?= (n) -> [2..Math.floor(Math.sqrt(n))].every? ( (x) -> n % x != 0 )
primes = (n) ->
  [2,3].concat (x for x in [5..n] when is_prime? x)
Array::sum = -> @.reduce (a, b) -> a + b

console.log primes(2000000).sum()

順路:CoffeeScriptでProject Euler #11
逆路:CoffeeScriptでProject Euler #9