Ми купили велику коробку випадкових компʼютерних деталей на гаражному розпродажі. Ми почали збирати ці деталі докупи, щоб будувати власні компʼютери.
Ми хочемо перевірити продуктивність різних комбінацій деталей, тож вирішуємо створити власну програму для бенчмаркінгу, щоб порівняти наші компʼютери між собою. Обираємо відомий алгоритм «решето Ератосфена». Він стародавній, але має змусити наші компʼютери працювати на межі можливостей.
Створіть програму, яка реалізує алгоритм решета Ератосфена, щоб знайти всі прості числа, менші або рівні заданому числу.
Просте число - це число, більше за 1, яке ділиться лише на 1 і на себе. Наприклад, 2, 3, 5, 7, 11 і 13 - прості числа. На противагу цьому, 6 не є простим числом, оскільки ділиться не тільки на 1 і на себе, а й на 2 і на 3.
Щоб скористатися решетом Ератосфена, спочатку створюємо список усіх чисел від 2 до заданого числа включно. Потім повторюємо такі кроки:
Повторюємо ці кроки, доки не пройдемо кожне число у своєму списку. Наприкінці всі непозначені числа - прості.
Тести перевіряють не те, чи реалізовано цей алгоритм, а лише те, чи отримано правильний список простих чисел. Щоб перевірити, чи правильно реалізовано решето, гарним першим тестом буде перевірка того, що в коді не використано операцій ділення чи взяття остачі.
Припустімо, ми шукаємо прості числа, менші або рівні 10.
Ми переглянули всі числа й побачили, що 2, 3, 5 і 7 усе ще непозначені, а отже, вони й є прості числа, менші або рівні 10.
Зареєструйтеся на Exercism, щоб вивчати й опановувати Scheme, а також 39 вправ та справжнє наставництво від людей, і все це безкоштовно.
Розглянемо різні підходи до решета Ератосфена: почнемо з вкладених циклів і лінивого обчислення, потім перейдемо до множин і нарешті поговоримо про рекурсію.