read

1.22 의 풀이에 다음의 코드만 수정, 추가 한다.
[CODE]
(define (find-divisor n test-divisor)  
  (cond ((> (square test-divisor) n) n)  
        ((divides? test-divisor n) test-divisor)  
        (else (find-divisor n (next test-divisor)))))

(define (next n)
  (cond ((= n 2) 3)
        ((even? n) (+ n 1))
        (else (+ n 2))))
[/CODE]

수행 결과

1.23 1.22 rate
10,000 11 21 1.9090909
100,000 8 21 2.625
1,000,000 9 22 2.4444444
10,000,000 14 29 2.0714286
100,000,000 38 44 1.1578947
1,000,000,000 75 57 0.76
10,000,000,000 221 317 1.4343891
100,000,000,000 502 676 1.3466135
1,000,000,000,000 1575 2132 1.3536508
10,000,000,000,000 5039 6615 1.3127605
100,000,000,000,000 16397 21536 1.313411

결과를 보면 1.22 때에 비해서 2배가 빨라지진 않는다. 수행하는 명령어의 수가 절반으로 줄었으나 원래 알고리즘의 수행시간이 clip_image002[6] 이었으므로 성능향상은 약 clip_image002[8] 만큼 일어난다고 보는 게 옳다. 실험 결과를 봐도 1.3 배 정도로 1.414 와 비슷한 것을 알 수 있다.

Blog Logo

Ki Sung Bae


Published

Image

Gsong's Blog

Developer + Entrepreneur = Entreveloper

Back to Overview