Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > LISP > найти простое число 2n-1=N


Автор: bezymannuy 1.5.2012, 07:05
Составить программу вычисляющий 2n-1=N (где n степень числа 2) и проверяющим является ли N простым числом. Число n меняется от 0 до 100. Вывести все n при которых N простое.

Помогите пожалуйста решить задачку на MULISP

Автор: _sg 12.5.2012, 21:28
Чужое решение с изменениями
Код

(defun primep (n)
  (loop for i from 3 to (isqrt n) by 2 never (zerop (rem n i))))
        
(defun lucas-lehmer (n)
  (loop with m = (1- (expt 2 n))
        for i from 1 to (1- n)
        for j = 4 then (rem (- (expt j 2) 2) m)
        finally (return (zerop j))))

(defun prime (m &optional (v '(2)) (n 2))
  (cond ((= m 2) (reverse v))
        ((and (primep n) (lucas-lehmer n)) (prime (1- m) (cons n v) (1+ n)))
        ((prime (1- m) v (1+ n)))))

> (prime 100)
(2 3 5 7 13 17 19 31 61 89)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)