Факторизация на HomeLisp
Формулировка задачи:
- (defun p (n)
- (setq i 2);;объявление переменной
- (do (
- ;; задание нач. значений и форм приращений, пусто
- )
- (
- (<= i (sqr n));;условие остановки цикла
- )
- (if (= 0 (remainder(%) n i)) ;; Истино - если не Nil
- (= n n/i)(printline n) (prints "* ") ;; если да, то выводим n
- (+ i 1) ;; если нет, то плюсуем и заново
- )
- )
- )
- // factorialization.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <stdio.h>
- #include <math.h>
- #include <conio.h>
- int _tmain(int argc, _TCHAR* argv[])
- {
- double n, i;
- scanf_s("%lf", &n);
- i = 2;
- while (i <= (sqrt(n)))
- if ((int)n % (int)i == 0) {
- printf_s("%.0lf*", i);
- n = n / i;
- }
- else
- i = i + 1;
- printf_s("%.0lf", n);
- _getch();
- return 0;
- }
- (defun p (n)
- (setq i 2)
- (loop (if(<= i (sqr n))
- (if (zerop(remainder n i)) ((= n n/i)(print n)(prints "* ")) (add1 i))
- (return 'ok))
- )
- )
Решение задачи: «Факторизация на HomeLisp»
- (defun factorize (n)
- (let ((res nil))
- (do ((i 2 (+ i 1)))
- ((> i (/ n 2)) (reverse res))
- (when (zerop (% n i)) (push i res)))))
- ==> factorize
- (factorize 10)
- ==> (2 5)
Объяснение кода листинга программы
В данном коде представлена функция factorize, которая принимает целочисленный аргумент n и возвращает список простых чисел, которые являются делителями n. Внутри функции используется блок let, который определяет две переменные: res и i. Переменная res инициализируется значением nil, а переменная i инициализируется значением 2. Далее следует цикл do, который выполняется до тех пор, пока значение переменной i не станет больше n/2. В каждой итерации цикла значение переменной i увеличивается на 1. Внутри цикла do находится условие when, которое проверяет, является ли n/i равным нулю. Если это так, то число i добавляется в конец списка res с помощью функции push. После завершения цикла do, результат функции factorize возвращается в обратном порядке с помощью функции reverse. Таким образом, при вызове функции factorize с аргументом 10, она вернет список простых чисел (2 5).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д