Friday, December 29, 2006

Prime numbers!

Here is a simple scheme program to generate prime numbers in scheme.
;Written by Fakrudeen Ali Ahmed
;Date 9 January 2007
;primes above a bound
(define (primes-above n count)
(define (loop k count)
(if (= count 0) '()
(if (prime? k) (begin (display k) (newline) (loop (+ k 1) (- count 1))) (loop (+ k 1) count))))
(loop n count)
)

;primes less than n
(define (primes-less-than n)
(define (loop k)
(if (= k n) '()
(begin (if (prime? k) (begin (display k) (newline))) (loop (+ k 1)))))
(loop 2)
)

;whether n is prime?
(define (prime? n)
(cond
((or (= n 2) (= n 3)) true)
((or(= 0 (remainder n 2)) (= 0 (remainder n 3))) false)
(else (let ((limit (expt n (/ 1 2))))
(define (loop k)
(let* ( (j (- (* 6 k) 1) ) (l (+ j 2)) )
(cond
((< limit j) true)

((or(= 0 (remainder n j)) (= 0 (remainder n l))) false)
(else (loop (+ 1 k))))))
(loop 1)))))

No comments: