Problem 47
今日のコード書き練習です。ソースコードアップするのここが便利なので^^;
ぱぱすに誘われて数的な問題を解いてるけど
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2047
jsの流儀が分からない
coffeescriptのコードです。結構話にならないこと書いてるかもしれない・・・
100万まで先に全部計算しちゃうけど実行時間は5秒
_ = require("underscore") main = ()-> maxint = 1000000 data = new Array(maxint+1) primeCheck = ()-> for num in [2..maxint] if data[num] is undefined data[num] = { prime: true, firstPrime: num, primes: [num] } if (m = maxint / num) isnt 1 for x in [2..m] data[num*x] = { prime: false, firstPrime: num } primesCalc = (num)-> if data[num].prime [num] else if (ret = data[num].primes) isnt undefined ret else fP = data[num].firstPrime return (data[num].primes = [fP].concat primesCalc(num/fP)) primeCheck() for num in [2..maxint] primesCalc(num) tempContinue = 0 for num in [2..maxint] primesCount = data[num].primesCount = _.size(_.uniq(data[num].primes)) if primesCount is 4 tempContinue += 1 if tempContinue is 4 console.log "Success", num break else tempContinue = 0 main()