На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
    > Может кто подскажет , XLisp
      Привет ребята возник вопрос по лиспу.(Xlisp)
      Не могу не в какую решить эту задачу. Пишут не зачет. уже устал ее переделовать.

      3) Напишите функцию, которая определяет являеться ли данное натурально число простым.
      Воспользуйтесь более общей задачей:
      (ispr n m) - Число n не делиться на на одно число большее или равное m и меньшее n'.
      Имеем (ispr n m)-истино, во-первых, если n=m, во-вторых, если истино(ispr n m+1) и n не делится на m.
      Сообщение отредактировано: Artega -
        Цитата
        а вы сами то что написали? покажите, глядишь и поправим ;-)


        Простое число - это число, которое делится только на себя (без остатка).

        Например, 1,2,3,5,7,11,13,17,19,23,29,31,37,… и так до бесконечности. . . .

        Первый способ.
        Цитата

        defun ispr (n m)
        (let((r(rem n m)))
        (if(zerop r) m (gcd m r))))


        Второй способ.
        Цитата

        (defun ispr n m)
        (if (null n)m)
        (insert(first n) (merge(reset n) m))))
        ----------
        (defun ispr (n m)
        (cond ((null m) (list n))
        ((< a (first m)) (cons n m))
        (t(cons(first m)(insert n (reset m)))))


        Что сдесь не правильно присылаю мне не зачет.
        Ребята кто знает помогите решить.
          http://www.netlib.org/bibnet/tools/emacs/primes-1.00/primes.el
          С комментариями :P

          Добавлено
          ExpandedWrap disabled
            (Define (Primes N) (RemoveComposite(ListNumbers 1 N)))
            (define (ListNumbers I J)
            (if (> I J) NIL
                (if (= I J) (list I)
                    (cons I (ListNumbers (+ 1 I) J))
            ))   )
            (define (RemoveComposite L)
            (if (NULL L) NIL
                (if (composite (car L)) (RemoveComposite (cdr L))
                    (cons (car L) (RemoveComposite (cdr L)))
            ))   )
            (define (composite n) (hasdivisor 2 N) )
            (define (hasdivisor I N)
            (if (> (* I I) N)  NIL
                (if (divides I N) T
            (hasdivisor (+ 1 I) N)
            ))   )
            (define (divides I N) (= (* I (/ N I)) N))

          Взято с http://www.csci.csusb.edu/dick/cs320/lab/primes.html

          Капец полный. Неужели пользоваться Google так трудно?
            Ho Im, спасибо. :rolleyes:
              Ho Im, Задача не правильно решена.. :'(
                Если задача еще актуальна могу преедложить свой вариант:

                ExpandedWrap disabled
                  (defun ispr(n)
                      (solve n 2 (/ n 2))
                  )
                   
                  (defun solve(n m limit)
                      (cond ((<= limit m) T)
                            ((= (mod n m) 0) nil)
                            (t (solve n (1+ m) limit))
                      )
                  )
                   
                  (defun mod (u v)
                      (- u (* (/ u v) v))
                  )
                   
                  (print (ispr 12))

                Я так понимаю, это ты задание такое получил от препода. Думаю рекурсией пойдет, преподы по лиспу это дело любят, но тока для небольших чисел. Скажем для 145145143, (если оно простое) уже будет переполнение.

                Не понимаю чего ты там мудрил вверху, все просто. Можешь реализовать в цикле, я в лиспе таким не пользуюсь (просто не смотрел, как это делается, пользуюсь тем, чему научили).
                1. Цикл m = от 2 до n/2
                2. Если n mod m = 0 выходим из функции (это не простое число!!!)
                3. Если мы благополучно миновали цикл, значит имеем дело с простым числом.
                  Platonis. Спасибо я уже наклепал. Но спасибо за помощь.
                    Вот блин, не заметил, что почти точно такой же ответ уже был прислан, тока в другой теме.

                    Зачем ты создал две одинаковые темы? :blink:
                      Platonis, Ты не чего не путаешь. Что то я не вижу ткни мне пальчиком.
                          Platonis, Наверное, не кто не подсказывал вот и решил ее создать. Но пусть ее модератор удалит повторяющую тему. ;)
                          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script execution time: 0,0398 ]   [ 14 queries used ]   [ Generated: 19.05.24, 10:09 GMT ]