Список простых чисел на заданном интервале - Lisp

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Напишите программу, формирующую список простых чисел на заданном интервале.

Решение задачи: «Список простых чисел на заданном интервале»

textual
Листинг программы
(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 выводится на экран.

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы