logo   Блоги рядом:  chudo, Casual Style, Настя Каменских
Регистрация  Забыли пароль?

[Блог]

він же blag

Werwolf  15.01.2008 18:22:32

Розклад числа на прості множники

Як я і обіцяв колись та десь (лінь шукати) показати програмку на ліспі, що розкладає число на прості множники (кому вже страшно, можуть далі не читати, найстрашніша частина для нешарящих - під катом) - показую. Так як знайти ту, що я написав раніше, я не зміг, то наваяв нову:

(defun rozk(i x)

     ((< x (* i i)) x)

     ((= 0 (mod x i)) ((print i) (rozk 2 (/ x i))))

        (rozk (+ i 1) x)

)

 

(defun rozklad_prosti(t)

     (rozk 2 t))

Откуда приходят на эту запись за последний месяц   1 день 10 дней 30 дней

Нет данных

Комментариев: 9

 
Контрольное число

шо таке ліспа?

Лісп - це мова програмування (http://en.wikipedia.org/wiki/Lisp_programming_language та/або http://ru.wikipedia.org/wiki/Лисп). Вона функціональна, досить збочена, характерною особливістю (практично зразу дозволяє взнати, що код на Ліспі) є велика кількість круглих дужок.

Якась сильно умна, а чому на с++ неможна було написати?)

Та не дуже, вона ж маленька, до того ж друга функція виключно для зручності. На С++ можна, але весь сенс збочення заключається в тому, щоб писати на ліспі.

та це точно збочення) нунах називається.

Красно дякую! Завдяки тобі, відміннику (до речі, вітаю з п'ятірками), я вперше реально виконав програму на Ліспі. Коли я вивчав Лісп 23 роки тому, у мене не було під рукою комп'ютеру з Ліспом ;)

Так от: встановив я Common Lisp (дуже кошерна річ! одразу менору показав :), але твоя програма під ним не працює. Ось такий варіант працює:

(defun rozk (i x)
    (cond
        ((< x (* i i)) (print x))
        ((= 0 (mod x i)) (print i) (rozk 2 (/ x i)))
        (t (rozk (+ i 1) x))
    )
)

(defun rozklad_prosti(n)
     (rozk 2 n))

Ти це мав на увазі? До речі, пропоную маленьке покращення: замість

        ((= 0 (mod x i)) (print i) (rozk 2 (/ x i)))

таке

        ((= 0 (mod x i)) (print i) (rozk i (/ x i)))

Хоча суворі програмери такого й не роблять ;)))

Ще раз дякую!

Упс, вибач, Александро, це адресувалося Вервольфу.

І я дякую. Користувався muLisp, можна знайти http://mi.unicyb.kiev.ua/, розділ "Бібліотека".

Покращення справді є, не подумав що з 2 перебирати щоразу необов"язково.

Зато сурові оптимізатори тільки так і роблять.

Ого, які розбіжності між діалектами Ліспа :-/





Цитата

Who dares wins.



Мітки

Календар
Пн Вт Ср Чт Пт Сб Вск
     
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

Реклама