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