Список простых чисел на заданном интервале - Lisp
Формулировка задачи:
Решение задачи: «Список простых чисел на заданном интервале»
(defun primes (n m) (cond ((> n m) nil) ((primep n) (cons n (primes (1+ n) m))) (t (primes (1+ n) m)))) (defun primep (n) (loop for a from 2 to (isqrt n) never (zerop (mod n a)))) > (primes 1 100) (1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97)
Объяснение кода листинга программы
В коде используется функция primes, которая принимает два аргумента — n и m. Функция возвращает список простых чисел на заданном интервале [n..m]. Если n больше m, то возвращается nil.
Простая функция primep проверяет, является ли число n простым. Она использует цикл loop, который выполняет итерацию от 2 до квадратного корня из n. Если остаток от деления n на любое число из этого диапазона равен нулю, то число n не является простым и функция возвращает nil. Если после выполнения цикла loop значение функции primep остается неопределенным, то число n является простым и функция возвращает n.
В основной части кода вызывается функция primes с аргументами 1 и 100. Возвращаемый список простых чисел на интервале от 1 до 100 выводится на экран.