Как проверить число на простоту и не сделать это медленно.
⏱️ ~30 мин·Средний·📚 2 урока
Делители числа
Число d является делителем числа n, если n делится на d без остатка — то есть n % d == 0. Например, делители числа 12 — это 1, 2, 3, 4, 6 и 12. Умение перебирать делители — основа множестваКоллекция уникальных элементов без порядка: {1, 2, 3}. По-английски set. задач: проверка простоты, поиск НОД, разложение на множители.
▶ divisors.py
Что такое простое число
Простое число — это натуральное число больше 1, у которого ровно два делителя: единица и оно само. 2, 3, 5, 7, 11, 13 — простые. А 4 = 2·2, 6 = 2·3 — составные. Единица не считается простой (у неё всего один делитель), а 2 — единственное чётное простое число.
▶ is-prime-naive.py
💡Совет
Ускоряем проверку. Перебирать делители до самого n расточительно. Если у числа есть делитель больше √n, то у него обязательно есть и парный делитель меньше √n. Значит, достаточно проверять делители только до √n включительно — это драматически быстрее для больших чисел.
▶ is-prime-fast.py
💡Совет
Предскажите вывод. Что напечатает код ниже? Он собирает все простые числа от 2 до 20. Вспомните, какие числа в этом диапазоне простые.
▶ predict-primes.py
Напечатается [2, 3, 5, 7, 11, 13, 17, 19] — все простые числа до 20. Списковое включение с фильтром по is_prime — компактный способ собрать такой списокИзменяемая упорядоченная коллекция элементов: [1, 2, 3]. По-английски list..
⚠️ Частые ошибки новичков
Ошибка. Начать перебор делителей с 1, а не с 2. Любое число делится на 1, поэтому проверка n % 1 == 0 всегда истинна и функцияИменованный блок кода, который можно вызывать многократно. Может принимать аргументы и возвращать результат. ошибочно объявит каждое число составным. Запустите сломанный код — даже 7 окажется «не простым». Почините: начинайте диапазон с 2.
▶ broken-prime.py
Заданиерешение.py
Напишите функцию count_divisors(n), возвращающую количество делителей числа n. Например, у 12 их шесть (1, 2, 3, 4, 6, 12).
Заданиерешение.py
Напишите функцию is_prime(n), возвращающую True, если n — простое число. Учтите, что числа меньше 2 не являются простыми. Для скорости проверяйте делители до √n.
❓Проверь себя
Сколько делителей у простого числа?
До какого значения достаточно проверять делители, чтобы определить простоту n?
Является ли число 1 простым?
ℹ️Важно
✅ Что вы узнали
Делитель: n % d == 0; у простого числа их ровно два.
Числа меньше 2 не являются простыми.
Проверку простоты достаточно вести до √n (d * d <= n).
Список простых удобно собрать списковым включением с фильтром.
Комментарии
Загрузка…
Загрузка комментариев…