Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
11
Добавлен:
28.06.2014
Размер:
1 Кб
Скачать
-- 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