SICP自習
SICP Lite #9に行かなかったので自習。
DrSchemeにてある範囲の素数を求めて、結果(個数)と実行時間を表示する。divides?とprime?はあるとして
(define (search-for-primes start end) (define (next n) (+ n (if (divides? 2 n) 1 2))) (define (loop start end result) (if (> start end) result (loop (next start) end (+ result (if (prime? start) 1 0))))) (loop start end 0)) (define (timed-search start end) (define (print-result result time) (print (string-append "prime count: " (number->string result))) (newline) (print (string-append "exec time: " (number->string time)))) (define (loop start end start-tick) (print-result (search-for-primes start end) (- (current-process-milliseconds) start-tick))) (loop start end (current-process-milliseconds)))
- 参考: http://d.hatena.ne.jp/chelan/20090508/1241832039
- condのelse節か、別定義に切り出せば複数行書ける
ちょうどリーマン予想のNHKスペシャルを見たところで、級数からπを求めるとかいうタイムリーなトピックがあって楽しい。(習ったのかもしれないが完全に忘れてる)