Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
28.06.2014
Размер:
1.45 Кб
Скачать
-- 2.8. Описать функцию, формирующую список всех возможных делителей её аргумента.
-- Сложноть n
f28 a = f28_1 a 2

f28_1 a i = if i == a then
[]
else
if (a `mod` i) == 0 then
i:(f28_1 a (i+1))
else
(f28_1 a (i+1))

--2.9. Описать функцию, формирующую упорядоченный по возрастанию список всех простых делителей её аргумента.
- ложность n^2
f29 a = f24 (f29_1 a 2 [])

f29_1 a i lst = if i == a then
lst
else
if (a `mod` i) == 0 then
if (f29_2 lst i) then
f29_1 a (i+1) (i:lst)
else
f29_1 a (i+1) lst
else
f29_1 a (i+1) lst

f29_2 [] i = True
f29_2 (x:xs) i = if i `mod` x == 0 then
False
else
f29_2 xs i


--Описать функцию, получающую по заданному списку список тех же элементов в обратном порядке.
-- сложность n
f24 xs = f24_1 xs []
--Первый параметр - исходный список, второй - инвариант - полученный список.
f24_1 [] y = y
f24_1 (x:xs) y = f24_1 xs (x:y)

Соседние файлы в папке 2