Я пишу функцию наименьшего простого числа, которая потребляет два натуральных числа и выдает наибольшее простое число в диапазоне снизу вверх. Я использовал вспомогательную функцию is-prime? чтобы проверить, является ли число простым или нет.
Ниже мой код:
(define (largest-prime bottom top)
(cond
[(and (>= top bottom)(equal? true (is-prime? top))) top]
[(and (< top bottom) (equal? true (is-prime? top))) false]
[else (largest-prime (sub1 top) bottom)]))
Кажется, что эта функция работает только в определенных случаях:
> (largest-prime 12 19)
19
> (largest-prime 12 18)
17
> (largest-prime 12 16)
false
Может кто-нибудь сказать мне, где я делаю не так?