Записки начинающего функциональщика: простые числа
Всё-таки функциональные языки – это совсем параллельная вселенная. И один из самых параллельных языков в ней – Haskell.
Захотелось нам ввести в программу бесконечный список простых чисел:
Будем пользоваться следующими правилами:
- если число составное, то оно обязательно имеет делитель меньший либо равный корню этого числа.
- поиск делителей очередного числа будем вести среди ранее найденных простых чисел.
Функция проверки числа на простоту (x – число, lst – список ранее найденных простых чисел):
|
|
И теперь определяем сам бесконечный список:
|
|
Всё! Теперь можем пользоваться этим списком, например получить список первых двадцати простых чисел:
|
|
Потрясающая гибкости и выразительная мощь языка!
Теперь попробуем на основе этого списка создать бесконечный список парных простых чисел (отличающихся на 2):
|
|
Первые 5 парных простых чисел:
|
|