Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > LISP > наибольший общий делитель


Автор: virux 20.3.2011, 22:59
я сделал фукцию но она не роботает.

(defun CMMDC(x y)
    (cond((< x y))
      (if(=(rem(y x)0))
                  return x) (- x 1))
(if((=(rem(x y)o)return y)(- x 1))))

как сделать чтобы она роботало?

Автор: k0rvin 21.3.2011, 19:13
http://www.billthelizard.com/2010/01/sicp-exercise-120-gcd.html

соответственно
Код

(defun gcd (a b)
  (do ()
      ((= b 0) a)
    (let ((next-a b)
          (next-b (rem a b)))
      (setf a next-a)
      (setf b next-b))))

Автор: donserj 24.3.2011, 00:02
functia treb numita cel mai mare sugator comun 

Автор: _sg 25.4.2014, 14:52
Код

(defun greatest-common-divisor (a b)
  (if (zerop (rem a b)) b (greatest-common-divisor b (rem a b))))

> (greatest-common-divisor 70 105)
35
> (greatest-common-divisor 32453 345)
23

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