Список простых чисел на заданном интервале - 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 выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д