【发布时间】:2012-12-09 19:44:06
【问题描述】:
这可能是一个基本的问题,但我在使用 Scheme 编写的程序时遇到了问题。该过程应返回所有小于或等于 N 的素数(N 来自输入)。
(define (isPrimeHelper x k)
(if (= x k) #t
(if (= (remainder x k) 0) #f
(isPrimeHelper x (+ k 1)))))
(define ( isPrime x )
(cond
(( = x 1 ) #t)
(( = x 2 ) #t)
( else (isPrimeHelper x 2 ) )))
(define (printPrimesUpTo n)
(define result '())
(define (helper x)
(if (= x (+ 1 n)) result
(if (isPrime x) (cons x result) ))
( helper (+ x 1)))
( helper 1 ))
我的检查主要工作,但函数printPrimesUpTo 似乎永远循环。基本上这个想法是检查一个数字是否是素数并将其放入结果列表中。
谢谢:)
【问题讨论】: