Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 2

Написать функцию

22.04.2013, 22:31. Показов 997. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать функцию prime-factors-mult (n), которая строит список простих делителей заданого числа n и их колличество.
Например:
> (Prime-factors-mult 315)
((3 2) (5 1) (7 1))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.04.2013, 22:31
Ответы с готовыми решениями:

Написать функцию, возвращающую номер минимального элемента в простом списке
написать функцию, возвращающую номер минимального элемента в простом списке.

Написать функцию:
Написать функцию F9 ((L1) 2), которая циклически сдвигает список L1 на 2 позиции вправо и группирует по 2 элемента в подсписков Например:...

Написать функцию
Есть такая задача. Написать функцию, которая возвращает квадрат аргумента, если аргумент число; хвост списка, если аргумент список;...

4
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
23.04.2013, 12:20
Выглядит страшновато.
Lisp
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
(defun sieve (maximum)
  (let ((sieve (make-array (1+ maximum) :element-type 'bit
                                          :initial-element 0)))
    (loop for candidate from 2 to maximum
          when (zerop (bit sieve candidate))
            collect candidate
            and do (loop for composite from (expt candidate 2) 
                                         to maximum by candidate
                          do (setf (bit sieve composite) 1)))))
 
(defun div-list (n seq)
 (let ((c nil))
   (dolist (i seq (reverse c))
     (if (= (rem n i) 0) (setq c (cons i c))))))
 
(defun amount-div (n lst)
  (prog (a l i)
  a (setq a (car lst))
    (setq lst (cdr lst))
    (setq i
  (let ((i 1) (div a))
    (loop (setq n (/ n div))
          (if (/= 0 (rem n div)) (return i))
          (setq i (1+ i)))))
     (push i l)
     (cond ((null lst) (return (reverse l))))
     (go a)))
 
(defun double (s l)
  (cond
    ((null s) nil)
    ((null l) nil)
    (t (cons (list (car s) (car l)) (double (cdr s) (cdr l))))))
 
(defun Prime-factors-mult (n)
  (let* ((a (div-list n (sieve n)))
         (b (amount-div n a)))
     (double a b)))
 
> (Prime-factors-mult 315)
 
==> ((3 2) (5 1) (7 1))
 
> (Prime-factors-mult 316)
 
==> ((2 2) (79 1))
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,722
Записей в блоге: 14
23.04.2013, 16:20
Вот (HomeLisp):

Lisp
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
32
33
34
35
;; Построение списка простых, не превышающих n
 
(defun prime-list (n)
  (let ((plist '(2 3 5)))
        (iter (for i from 6 to n)
              (when 
                 (and (oddp i)
                      (not (iter (for j from 2 to (flo2fix (sqr i)))
                           (when (zerop (% i j)) (return t))))) (collecting i into plist)))
   plist))
 
==> prime-list
 
(prime-list 168)
 
==> (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 101 103 107 109 113 127 131 137 139 149 151 157 163 167)
 
;; Решение
 
(defun task (n)
  (let ((plist (prime-list n)) (res nil) (c 0) (k 0))
       (dolist (i plist res)
         (setq c 0)
         (setq k n) 
         (loop
             (cond ((zerop k) (return nil))
                   ((zerop (% k i)) (setq c (1+ c) k (\ k i)))
                   (t (return nil))))  
         (when (> c 0) (push (list i c) res)))))
            
==> task
 
(task 234)
 
==> ((13 1) (3 2) (2 1))
1
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
23.04.2013, 16:55
uide etiam
https://www.cyberforum.ru/post4310051.html
2
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
23.04.2013, 19:35
Catstail
Надо же!
Lisp
1
2
3
(task 2000)
 
==> ((5 3) (2 4))
https://www.cyberforum.ru/cgi-bin/latex.cgi?{5}^{3} * https://www.cyberforum.ru/cgi-bin/latex.cgi?{2}^{4} = 2000
После 5-ти нет простых чисел, делящих 2000 нацело.
Но раз все числа после 2-ки нечетные, то:
Lisp
1
2
3
(task 1999)
 
==> ((1999 1))
Занимательно.

helter
infigo
Что в переводе означает, ничего себе.
Замечательное знание предмета!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.04.2013, 19:35
Помогаю со студенческими работами здесь

написать функцию
Есть список и некоторый объект. Написать функцию, возвращающую новый список, в котором объект замещает первый элемент списка, если первый...

Написать функцию
Здравствуйте, помогите пожалуйста выполнить следующие задания Задание 1. Написать функцию, которая для заданных L1 и L2 возвращает...

Написать функцию со списками
Привет всем! Нахлынула недавно задача: Вообще не понимаю, что надо сделать. Это как-то связано в дискретной математикой?...

Написать функцию Падована
функцией Падована (P(n)) называется последовательность натуральных чисел, удовлетворяющая рекуррентному соотношению: 1 если n=(0, 1, 2) или...

Написать именованую функцию
Здравствуйте! Нужно помощь в написании именованной функции, которая создает список из элементов других списков! Только сегодня...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru