Быстрая проверка натурального числа на простоту
Запись от Thinker размещена 10.07.2013 в 09:49
Часто возникает задача проверки натурального числа на простоту. При этом имеются вероятностные и детерминированные методы проверки. Здесь рассматриваются только детерминированные алгоритмы, дающие 100% ответ на вопрос о простоте. Хорошо известно такое утверждение: если натуральное число n>1 не делится ни на одно простое число, не превосходящее , то оно простое. В связи с этим получается самый простой способ проверки на простоту алгоритм Кликните здесь для просмотра всего текста
В данном алгоритме из множества отброшено 50% четных чисел, так как если число a не делится на 2, то нет смыла делить его на 4, 6 и т.д. Данный метод можно усовершенствовать и отбросить из множества больше чисел. Для этого выбирается некоторое число m, равное произведению простых чисел без степеней и рассматриваются только те элементы множества , которые взаимно просты с m. Например, если m = 6 = 2*3, то из этого множества отбрасывается 66% элементов (ненужных проверок). В этом случае алгоритм будет быстрее предыдущего при больших n Кликните здесь для просмотра всего текста
Если m = 30 = 2*3*5, то такой алгоритм будет еще быстрее и отбрасывает уже 74% лишних элементов Кликните здесь для просмотра всего текста
Также проверку на простоту можно в одну строчку написать (для a>=2) Кликните здесь для просмотра всего текста
и вызывать Prime(a, 2). Кратко и понятно, только толку от него почти никакого. |