我正在编写一个小函数来检查数字是否为素数。我很难转换我在C ++中检查它的方式。主要是或运算符。
if( ( (n % 2) == 0) || (n != 1) )
***recursive again***
else
"Done";
(define prime
(lambda (n)
(if (= n 1) n
(if (or (= (modulo n 2) 0) (not ( = n 1))) prime(n)
(display "Done")
)
)
)
)
谢谢
答案 0 :(得分:0)
这是一个识别素数的简单函数:
(define (prime? n)
(let loop ((d 2))
(cond ((< n (* d d)) #t)
((zero? (modulo n d)) #f)
(else (loop (+ d 1))))))
你对Scheme有很多误解,也有关于素数的误解。和老师谈谈;这就是他的目的。
答案 1 :(得分:0)
命名循环是一个高级工具,如果这是作业,我猜老师正在寻找这样的东西,使用本地函数定义来进行递归
(define (prime? n)
(define (f n c)
(cond [(< n (* c c)) #t]
[(zero? (modulo n c)) #f]
[else (f n (add1 c))]))
;in
(f n 2))