メシ食ったあと、問題を解くのは辛い…
僕の解答
(define (smallest-divisor n) (find-divisor n 2)) (define (find-divisor n test-divisor) (cond ((> (square test-divisor) n) n) ((divides? test-divisor n) test-divisor) (else (find-divisor n (+ test-divisor 1))))) (define (divides? a b) (= (remainder b a) 0)) (define (square n) (* n n)) (define (println x) (display x) (newline)) (println (smallest-divisor 199)) (println (smallest-divisor 1999)) (println (smallest-divisor 19999))
とりあえず、199、1999、7っと。
Fermatテストは使わなくていいんだよね…
所感
とりあえず合ってた。まあ。