read

[CODE]
(define (fast-prime? n times)
  (cond ((= times 0) #t)
        ((fermat-test n) (fast-prime? n (- times 1)))
        (else #f)))
(define (fermat-test n)
  (define (try-it a)
    (= (expmod a n n) a))
  (try-it (+ 1 (random (- n 1)))))
(define (expmod base exp m)
  (cond ((= exp 0) 1)
        ((even? exp)
         (remainder (square (expmod base (/ exp 2) m))
                    m))
        (else
         (remainder (* base (expmod base (- exp 1) m))
                    m))))
(define (search-for-primes rangestart)
  (define (SFP-iter start-time n)
    (newline)
    (display n)
    (if (fast-prime? n 50) (report-prime (- (runtime) start-time))
        (SFP-iter start-time (+ n 2))))
  (if (even? rangestart) (SFP-iter (runtime) (+ rangestart 1))
      (SFP-iter (runtime) rangestart)))
[/CODE]

자 이제 테스트만 해보면 되는데, 굵게 표시한 부분의 random() 프로시져가 int 범위 안에서만 값을 리턴하다 보니 결과가 제대로 안나온다. 쳇.
아마 추측컨데, log(n) 의 수행시간을 가지므로 0 의 개수에 비례해서 수행시간이 커질 것이다.

Blog Logo

Ki Sung Bae


Published

Image

Gsong's Blog

Developer + Entrepreneur = Entreveloper

Back to Overview