Как найти является ли число простым


Загрузить PDF


Загрузить PDF

Простые числа — это числа, которые делятся только на себя и на 1. Все остальные числа называются составными числами. Есть множество способов определить, является ли число простым, и все они имеют свои преимущества и недостатки. С одной стороны, некоторые методы отличаются большой точностью, но они довольно сложны, если вы имеете дело с большими числами. С другой стороны, существуют намного более быстрые способы, но они могут привести к неправильным результатам. Выбор подходящего метода зависит от того, с насколько большими числами вы работаете.

Примечание: во всех формулах n обозначает проверяемое число.

  1. Изображение с названием Check if a Number Is Prime Step 1

    1

    Перебор делителей. Достаточно поделить n на все простые числа от 2 до округленного значения({sqrt  {n}}).

  2. Изображение с названием Check if a Number Is Prime Step 2

    2

    Малая теорема Ферма. Предупреждение: иногда тест ложно идентифицирует составные числа как простые, даже для всех величин a.

    • Выберем целое число a, такое что 2 ≤ a ≤ n – 1.
    • Если an (mod n) = a (mod n), то число, вероятно, простое. Если равенство не выполняется, число n является составным.
    • Проверьте данное равенство для нескольких значений a, чтобы увеличить вероятность того, что проверяемое число действительно является простым.
  3. Изображение с названием Check if a Number Is Prime Step 3

    3

    Тест Миллера-Рабина. Предупреждение: иногда, хотя и редко, для нескольких значений a тест ложно идентифицирует составные числа как простые.

    • Найдите величины s и d, такие чтобы n-1=2^{s}*d.
    • Выберите целое число a в интервале 2 ≤ a ≤ n – 1.
    • Если ad = +1 (mod n) или -1 (mod n), то n, вероятно, является простым числом. В этом случае перейдите к результату теста. Если равенство не выполняется, перейдите к следующему шагу.
    • Возведите ответ в квадрат (a^{{2d}}). Если получится -1 (mod n), то n, вероятно, простое число. В этом случае перейдите к результату теста. Если равенство не выполняется, повторите (a^{{4d}} и так далее) до a^{{2^{{s-1}}d}}.
    • Если на каком-то шаге после возведения в квадрат числа, отличного от pm 1 (mod n), у вас получилось +1 (mod n), значит n является составным числом. Если a^{{2^{{s-1}}d}}neq pm 1 (mod n), то n не является простым числом.
    • Результат теста: если n прошло тест, повторите его для других значений a, чтобы повысить степень достоверности.

    Реклама

  1. Изображение с названием Check if a Number Is Prime Step 4

    1

    Перебор делителей. По определению число n является простым лишь в том случае, если оно не делится без остатка на 2 и другие целые числа, кроме 1 и самого себя. Приведенная выше формула позволяет удалить ненужные шаги и сэкономить время: например, после проверки того, делится ли число на 3, нет необходимости проверять, делится ли оно на 9.

    • Функция floor(x) округляет число x до ближайшего целого числа, которое меньше или равно x.
  2. Изображение с названием Check if a Number Is Prime Step 5

    2

    Узнайте о модульной арифметике. Операция “x mod y” (mod является сокращением латинского слова “modulo”, то есть “модуль”) означает “поделить x на y и найти остаток”.[1]
    Иными словами, в модульной арифметике по достижении определенной величины, которую называют модулем, числа вновь “превращаются” в ноль. Например, часы отсчитывают время с модулем 12: они показывают 10, 11 и 12 часов, а затем возвращаются к 1.

    • Во многих калькуляторах есть клавиша mod. В конце данного раздела показано, как вручную вычислять эту функцию для больших чисел.
  3. Изображение с названием Check if a Number Is Prime Step 6

    3

    Узнайте о подводных камнях малой теоремы Ферма. Все числа, для которых не выполняются условия теста, являются составными, однако остальные числа лишь вероятно относятся к простым. Если вы хотите избежать неверных результатов, поищите n в списке “чисел Кармайкла” (составных чисел, которые удовлетворяют данному тесту) и “псевдопростых чисел Ферма” (эти числа соответствуют условиям теста лишь при некоторых значениях a).[2]

  4. Изображение с названием Check if a Number Is Prime Step 7

    4

    Если удобно, используйте тест Миллера-Рабина. Хотя данный метод довольно громоздок при вычислениях вручную, он часто используется в компьютерных программах. Он обеспечивает приемлемую скорость и дает меньше ошибок, чем метод Ферма.[3]
    Составное число не будет принято за простое, если провести расчеты для более ¼ значений a.[4]
    Если вы случайным способом выберете различные значения a и для всех них тест даст положительный результат, можно с достаточно высокой долей уверенности считать, что n является простым числом.

  5. Изображение с названием Check if a Number Is Prime Step 8

    5

    Для больших чисел используйте модульную арифметику. Если у вас под рукой нет калькулятора с функцией mod или калькулятор не рассчитан на операции с такими большими числами, используйте свойства степеней и модульную арифметику, чтобы облегчить вычисления.[5]
    Ниже приведен пример для 3^{{50}} mod 50:

    Реклама

  1. Изображение с названием Check if a Number Is Prime Step 9

    1

    Выберите два числа. Одно из чисел должно быть составным, а второе — как раз то, простоту которого вы хотите проверить.

    • Число1 = 35
    • Число2 = 97
  2. Изображение с названием Check if a Number Is Prime Step 10

    2

    Выберите два значения, которые больше нуля и соответственно меньше чисел Число1 и Число2. Эти значения не должны совпадать друг с другом.

    • Значение1 = 1
    • Значение2 = 2
  3. Изображение с названием Check if a Number Is Prime Step 11

    3

    Вычислите MMI (математическую мультпликативную инверсию) для Числа1 и Числа2.

    • Вычислите MMI
      • MMI1 = Число2 ^ -1 Mod Число1
      • MMI2 = Число1 ^ -1 Mod Число2
    • Только для простых чисел (это даст число для составных чисел, но оно не будет его MMI):
      • MMI1 = (Число2 ^ (Число1-2)) % Число1
      • MMI2 = (Число1 ^ (Число2-2)) % Число2
    • Например:
      • MMI1 = (97 ^ 33) % 35
      • MMI2 = (35 ^ 95) % 97
  4. Изображение с названием Check if a Number Is Prime Step 12

    4

    Создайте таблицу для каждой MMI вплоть до модулей log2:

    • Для MMI1
      • F(1) = Число2 % Число1 = 97 % 35 = 27
      • F(2) = F(1) * F(1) % Число1 = 27 * 27 % 35 = 29
      • F(4) = F(2) * F(2) % Число1 = 29 * 29 % 35 = 1
      • F(8) = F(4) * F(4) % Число1 = 1 * 1 % 35 = 1
      • F(16) =F(8) * F(8) % Число1 = 1 * 1 % 35 = 1
      • F(32) =F(16) * F(16) % Число1 = 1 * 1 % 35 = 1
    • Вычислите парные Число1 – 2
      • 35 -2 = 33 (10001) по основанию 2
      • MMI1 = F(33) = F(32) * F(1) mod 35
      • MMI1 = F(33) = 1 * 27 mod 35
      • MMI1 = 27
    • Для MMI2
      • F(1) = Число1 % Число2 = 35 % 97 = 35
      • F(2) = F(1) * F(1) % Число2 = 35 * 35 mod 97 = 61
      • F(4) = F(2) * F(2) % Число2 = 61 * 61 mod 97 = 35
      • F(8) = F(4) * F(4) % Число2 = 35 * 35 mod 97 = 61
      • F(16) = F(8) * F(8) % Число2 = 61 * 61 mod 97 = 35
      • F(32) = F(16) * F(16) % Число2 = 35 * 35 mod 97 = 61
      • F(64) = F(32) * F(32) % Число2 = 61 * 61 mod 97 = 35
      • F(128) = F(64) * F(64) % Число2 = 35 * 35 mod 97 = 61
    • Вычислите парные Число2 – 2
      • 97 – 2 = 95 = (1011111) по основанию 2
      • MMI2 = (((((F(64) * F(16) % 97) * F(8) % 97) * F(4) % 97) * F(2) % 97) * F(1) % 97)
      • MMI2 = (((((35 * 35) %97) * 61) % 97) * 35 % 97) * 61 % 97) * 35 % 97)
      • MMI2 = 61
  5. Изображение с названием Check if a Number Is Prime Step 13

    5

    Вычислите (Значение1 * Число2 * MMI1 + Значение2 * Число1 * MMI2) % (Число1 * Число2)

    • Ответ = (1 * 97 * 27 + 2 * 35 * 61) % (97 * 35)
    • Ответ = (2619 + 4270) % 3395
    • Ответ = 99
  6. Изображение с названием Check if a Number Is Prime Step 14

    6

    Проверьте, что Число1 не является простым

    • Вычислите (Ответ – Значение1) % Число1
    • 99 – 1 % 35 = 28
    • Так как 28 больше 0, то 35 не является простым числом.
  7. Изображение с названием Check if a Number Is Prime Step 15

    7

    Проверьте, что Число2 является простым.

    • Вычислите (Ответ – Значение2)% Число2
    • 99 – 2 % 97 = 0
    • Так как 0 равен 0, то 97 — скорее всего простое число.
  8. Изображение с названием Check if a Number Is Prime Step 16

    8

    Повторите шаги с 1 по 7 по меньшей мере еще два раза.

    • Если в шаге 7 получается 0:
      • Используйте другое Число1, если Число1 не является простым.
      • Используйте другое Число1, если Число1 является простым. В этом случае в шагах 6 и 7 должен получиться 0.
      • Используйте другие Значение1 и Значение2.
    • Если в шаге 7 вы постоянно получаете 0, то с очень большой вероятностью Число2 является простым.
    • Шаги с 1 по 7 могут привести к ошибке, если Число1 не является простым, а Число2 является делителем Числа1. Описанный метод работает во всех случаях, когда оба числа являются простыми.
    • Причина, по которой необходимо повторять шаги с 1 по 7, заключается в том, что в некоторых случаях, даже если Число1 и Число 2 не являются простыми, в шаге 7 вы получите 0 (для одного или обоих чисел). Это случается редко. Выберите другое Число1 (составное), и если Число2 не является простым, тогда Число2 не будет равно нулю в шаге 7 (за исключением случая, когда Число1 является делителем Числа2 — здесь простые числа всегда будут равны нулю в шаге 7).

    Реклама

Советы

  • Простые числа от 168 до 1000: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997.[6]
  • Хотя при работе с большими числами перебор делителей является трудоемким способом проверки, он довольно эффективен в случае малых чисел. Даже в случае больших чисел начинают с тестирования малых делителей, а затем переходят к более сложным методам проверки простоты чисел (если малые делители не найдены).

Реклама

Что вам понадобится

  • Бумага, ручка или компьютер

Об этой статье

Эту страницу просматривали 197 704 раза.

Была ли эта статья полезной?

Алгоритмы поиска простых чисел

Время на прочтение
6 мин

Количество просмотров 134K

«Самое большое простое число 232582657-1. И я с гордостью утверждаю, что запомнил все его цифры… в двоичной форме».
Карл Померанс

Натуральное число называется простым, если оно имеет только два различных делителя: единицу и само себя. Задача поиска простых чисел не дает покоя математикам уже очень давно. Долгое время прямого практического применения эта проблема не имела, но все изменилось с появлением криптографии с открытым ключом. В этой заметке рассматривается несколько способов поиска простых чисел, как представляющих исключительно академический интерес, так и применяемых сегодня в криптографии.

Решето Эратосфена

Решето Эратосфена — алгоритм, предложенный древнегреческим математиком Эратосфеном. Этот метод позволяет найти все простые числа меньше заданного числа n. Суть метода заключается в следующем. Возьмем набор чисел от 2 до n. Вычеркнем из набора (отсеим) все числа делящиеся на 2, кроме 2. Перейдем к следующему «не отсеянному» числу — 3, снова вычеркиваем все что делится на 3. Переходим к следующему оставшемуся числу — 5 и так далее до тех пор пока мы не дойдем до n. После выполнения вышеописанных действий, в изначальном списке останутся только простые числа.

Алгоритм можно несколько оптимизировать. Так как один из делителей составного числа n обязательно

$leqslant sqrt{n}$, алгоритм можно останавливать, после вычеркивания чисел делящихся на

$sqrt{n}$.

Иллюстрация работы алгоритма из Википедии:

image

Сложность алгоритма составляет

$O(n loglog n)$, при этом, для хранения информации о том, какие числа были вычеркнуты требуется

$O(n)$ памяти.

Существует ряд оптимизаций, позволяющих снизить эти показатели. Прием под названием wheel factorization состоит в том, чтобы включать в изначальный список только числа взаимно простые с несколькими первыми простыми числами (например меньше 30). В теории предлагается брать первые простые примерно до

$sqrt{log n}$. Это позволяет снизить сложность алгоритма в

$loglog n$ раз. Помимо этого для уменьшения потребляемой памяти используется так называемое сегментирование. Изначальный набор чисел делится на сегменты размером

$leqslant sqrt{n}$ и для каждого сегмента решето Эратосфена применяется по отдельности. Потребление памяти снижается до

$O(sqrt{n})$.

Решето Аткина

Более совершенный алгоритм отсеивания составных чисел был предложен Аткином и Берштайном и получил название Решето Аткина. Этот способ основан на следующих трех свойствах простых чисел.

Свойство 1

Если n — положительное число, не кратное квадрату простого числа и такое, что

$n equiv 1(mod 4)$. То n — простое, тогда и только тогда, когда число корней уравнения

$4x^2+y^2=n$ нечетно.

Свойство 2

Если n — положительное число, не кратное квадрату простого числа и такое, что

$n equiv 1(mod 6)$. То n — простое, тогда и только тогда, когда число корней уравнения

$3x^2+y^2=n$ нечетно.

Свойство 3

Если n — положительное число, не кратное квадрату простого числа и такое, что

$n equiv 11(mod 12)$. То n — простое, тогда и только тогда, когда число корней уравнения

$3x^2-y^2=n$ нечетно.

Доказательства этих свойств приводятся в этой статье.

На начальном этапе алгоритма решето Аткина представляет собой массив A размером n, заполненный нулями. Для определения простых чисел перебираются все

$x, y < sqrt n$. Для каждой такой пары вычисляется

$4x^2+y^2$,

$3x^2+y^2$,

$3x^2-y^2$ и значение элементов массива

$A[4x^2+y^2]$,

$A[3x^2+y^2]$,

$A[3x^2-y^2]$ увеличивается на единицу. В конце работы алгоритма индексы всех элементов массива, которые имеют нечетные значения либо простые числа, либо квадраты простого числа. На последнем шаге алгоритма производится вычеркивание квадратов оставшихся в наборе чисел.

Из описания алгоритма следует, что вычислительная сложность решета Аткина и потребление памяти составляют

$O(n)$. При использовании wheel factorization и сегментирования оценка сложности алгоритма снижается до

$O(n / loglog n)$, а потребление памяти до

$O(sqrt{n})$.

Числа Мерсенна и тест Люка-Лемера

Конечно при таких показателях сложности, даже оптимизированное решето Аткина невозможно использовать для поиска по-настоящему больших простых чисел. К счастью, существуют быстрые тесты, позволяющие проверить является ли заданное число простым. В отличие от алгоритмов решета, такие тесты не предназначены для поиска всех простых чисел, они лишь способны сказать с некоторой вероятностью, является ли определенное число простым.

Один из таких методов проверки — тест Люка-Лемера. Это детерминированный и безусловный тест простоты. Это означает, что прохождение теста гарантирует простоту числа. К сожалению, тест предназначен только для чисел особого вида

$2^p-1$, где p — натуральное число. Такие числа называются числами Мерсенна.

Тест Люка-Лемера утверждает, что число Мерсенна

$M_p=2^p-1$ простое тогда и только тогда, когда p — простое и

$M_p$ делит нацело

$(p-1)$-й член последовательности

$S_k$ задаваемой рекуррентно:

$S_1=4, S_k=S_{k-1}^2-2$ для

$k > 1$.

Для числа

$M_p$ длиной p бит вычислительная сложность алгоритма составляет

${displaystyle O(p^{3})}$.

Благодаря простоте и детерминированности теста, самые большие известные простые числа — числа Мерсенна. Самое большое известное простое число на сегодня —

$2^{82,589,933}-1$, его десятичная запись состоит из 24,862,048 цифр. Полюбоваться на эту красоту можно здесь.

Теорема Ферма и тест Миллера-Рабина

Простых чисел Мерсенна известно не очень много, поэтому для криптографии с открытым ключом необходим другой способ поиска простых чисел. Одним из таким способов является тест простоты Ферма. Он основан на малой теореме Ферма, которая гласит, что если n — простое число, то для любого a, которое не делится на n, выполняется равенство

$a^{n-1}equiv 1{pmod {n}}$. Доказательство теоремы можно найти на Википедии.

Тест простоты Ферма — вероятностный тест, который заключается в переборе нескольких значений a, если хотя бы для одного из них выполняется неравенство

$a^{n-1} notequiv 1 pmod n$, то число n — составное. В противном случае, n — вероятно простое. Чем больше значений a использовано в тесте, тем выше вероятность того, что n — простое.

К сожалению, существуют такие составные числа n, для которых сравнение

$a^{n-1}equiv 1{pmod {n}}$ выполняется для всех a взаимно простых с n. Такие числа называются числам Кармайкла. Составные числа, которые успешно проходят тест Ферма, называются псевдопростыми Ферма. Количество псевдопростых Ферма бесконечно, поэтому тест Ферма — не самый надежный способ определения простых чисел.

Тест Миллера-Рабина

Более надежных результатов можно добиться комбинируя малую теорему Ферма и тот факт, что для простого числа p не существует других корней уравнения

$x^2 equiv 1 pmod p$, кроме 1 и -1. Тест Миллера-Рабина перебирает несколько значений a и проверяет выполнение следующих условий.

Пусть p — простое число и

$p-1=2^sd$, тогда для любого a справедливо хотя бы одно из условий:

  1. $a^{d}equiv pm1{pmod {p}}$
  2. Существует целое число r < s такое, что $a^{2^{r}d}equiv -1{pmod {p}}$

По теореме Ферма

$a^{p-1}equiv1pmod p$, а так как

$p-1=2^sd$ из свойства о корнях уравнения

$x^2 equiv 1 pmod p$ следует что если мы найдем такое a, для которого одно из условий не выполняется, значит p — составное число. Если одно из условий выполняется, число a называют свидетелем простоты числа n по Миллеру, а само число n — вероятно простым.

Чем больше свидетелей простоты найдено, тем выше вероятность того, что n — простое. Согласно теореме Рабина вероятность того, что случайно выбранное число a окажется свидетелем простоты составного числа составляет приблизительно

$1/4$.

Следовательно, если проверить k случайных чисел a, то вероятность принять составное число за простое

$approx(1/4)^k$.

Сложность работы алгоритма

$O(klog^3p)$, где k — количество проверок.

Благодаря быстроте и высокой точности тест Миллера-Рабина широко используется при поиске простых чисел. Многие современные криптографические библиотеки при проверке больших чисел на простоту используют только этот тест и, как показал Мартин Альбрехт в своей работе , этого не всегда оказывается достаточно.

Он смог сгенерировать такие составные числа, которые успершно прошли тест на простоту в библиотеках OpenSSL, CryptLib, JavaScript Big Number и многих других.

Тест Люка и Тест Baillie–PSW

Чтобы избежать уязвимости, связанные с ситуациями, когда сгенерированное злоумышленником составное число, выдается за простое, Мартин Альбрехт предлагает использовать тест Baillie–PSW. Несмотря на то, что тест Baillie–PSW является вероятностным, на сегодняшний день не найдено ни одно составное число, которое успешно проходит этот тест. За нахождение подобного числа в 1980 году авторы алгоритма пообещали вознаграждение в размере $30. Приз пока так и не был востребован.

Ряд исследователей проверили все числа до

$2^{64}$ и не обнаружили ни одного составного числа, прошедшего тест Baillie–PSW. Поэтому, для чисел меньше

$2^{64}$ тест считается детерминированным.

Суть теста сводится к последовательной проверке числа на простоу двумя различными методами. Один из этих методов уже описанный выше тест Миллера-Рабина. Второй — тест Люка на сильную псевдопростоту.

Тест Люка на сильную псевдопростоту

Последовательности Люка — пары рекуррентных последовательностей

${U_{n}(P,Q)}, {V_{n}(P,Q)}$, описываемые выражениями:

${displaystyle U_{0}(P,Q)=0,quad U_{1}(P,Q)=1,quad U_{n+2}(P,Q)=Pcdot U_{n+1}(P,Q)-Qcdot U_{n}(P,Q),,ngeq 0}$

${displaystyle V_{0}(P,Q)=2,quad V_{1}(P,Q)=P,quad V_{n+2}(P,Q)=Pcdot V_{n+1}(P,Q)-Qcdot V_{n}(P,Q),,ngeq 0}$

Пусть

$U_n(P,Q)$ и

$V_n(P,Q)$ — последовательности Люка, где целые числа P и Q удовлетворяют условию

${displaystyle D=P^{2}-4Qneq 0}$

Вычислим символ Якоби:

$left({frac {D}{p}}right)=varepsilon$.

Найдем такие r, s для которых выполняется равенство

$n-ε=2^rs$

Для простого числа n выполняется одно из следующих условий:

  1. n делит $U_s$
  2. n делит $V_{2^js}$ для некоторого j < r

В противном случае n — составное.

Вероятность того, что составное число n успешно пройдет тест Люка для заданной пары параметров P, Q не превышает 4/15. Следовательно, после применения теста k раз, эта вероятность составляет

$(4/15)^k$.

Тесты Миллера-Рабина и Люка производят не пересекающиеся множества псевдопростых чисел, соответственно если число p прошло оба теста, оно простое. Именно на этом свойстве основывается тест Baillie–PSW.

Заключение

В зависимости от поставленной задачи, могут использоваться различные методы поиска простых чисел. К примеру, при поиске больших простых чисел Мерсенна, сперва, при помощи решета Эратосфена или Аткина определяется список простых чисел до некоторой границы, предположим, до

$10^8$. Затем для каждого числа p из списка, с помощью теста Люка-Лемера, на простоту проверяется

$M_p=2^p-1$.

Чтобы сгенерировать большое простое число в криптографических целях, выбирается случайное число a и проверяется тестом Миллера-Рабина или более надежным Baillie–PSW. Согласно теореме о распределении простых чисел, у случайно выбранного числа от 1 до n шанс оказаться простым примерно равен

${frac {1}{ln n}}$. Следовательно, чтобы найти простое число размером 1024 бита, достаточно перебрать около тысячи вариантов.

P.S. Исходники

Реализацию всех описанных алгоритмов на Go можно посмотреть на GitHub.

Целые числа от нуля до ста. Простые числа отмечены красным.

Разложение числа 42 на простые множители: {displaystyle 42=2times 3times 7}

Просто́е число́ — натуральное число, имеющее ровно два различных натуральных делителя. Другими словами, натуральное число p является простым, если оно отлично от 1 и делится без остатка только на 1 и на само p[1].

Пример: число 2 простое (делится на 1 и на 2), а 4 не является простым, так как, помимо 1 и 4, делится на 2 — имеет три натуральных делителя.

Изучением свойств простых чисел занимается теория чисел, а основная теорема арифметики устанавливает в ней их центральную роль: любое целое число, превышающее 1, либо является простым, либо может быть выражено произведением простых чисел, причём такое представление однозначно с точностью до порядка сомножителей[1]. Единицу не относят к простым числам, так как иначе указанное разложение становится неоднозначным[2]: {displaystyle x=1cdot x=1cdot 1cdot x=1cdot 1cdot ...cdot 1cdot x}.

Натуральные числа можно разделить на три класса: единица (имеет один натуральный делитель), простое число (имеет два натуральных делителя), составное число (имеет более двух натуральных делителей)[1]. Как простых, так и составных чисел бесконечно много.

Последовательность простых чисел начинается так:

2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, …[3]

Существуют различные алгоритмы проверки числа на простоту. Например, известный метод перебора делителей в сравнении с другими примитивный и медленный.Перейти к разделу «#Тест простоты»

Простые числа широко используются в математике и смежных науках. Во многих алгоритмах информационных технологий, например в асимметричных криптосистемах, используются свойства факторизации целых чисел[4].

Многие проблемы, касающиеся простых чисел, остаются открытымиПерейти к разделу «#Открытые вопросы».

Существуют обобщения понятия простого числа для произвольных колец и других алгебраических структурПерейти к разделу «#Вариации и обобщения».

История[править | править код]

Неизвестно, когда было определено понятие простого числа, однако первые свидетельства относят к верхнему палеолиту, что подтверждается костью Ишанго[5].

В сохранившихся записях древнеегипетских математиков есть намёки на то, что у них были некоторые представления о простых числах: например, папирус Райнда, относящийся ко второму тысячелетию до нашей эры, содержит таблицу соотношений числа 2 к n, представленных суммой трёх или четырёх египетских дробей с единицей в числителе и различных знаменателях. Разложения дробей, знаменатели которых имеют общий делитель, похожи, поэтому египтяне по крайней мере знали разницу между простым и составным числами[6].

Фрагмент «Начал» Евклида, обнаруженный в Оксиринхе

Самые ранние дошедшие до нас исследования простых чисел принадлежат математикам Древней Греции. Они изобрели решето Эратосфена — алгоритм последовательного нахождения всех простых чисел от 1 до n. Опубликованные в приблизительно трёхсотом году до нашей эры «Начала» Евклида содержат важные теоремы о простых числах, включая бесконечность их множества, лемму Евклида и основную теорему арифметики[7].

Вплоть до XVII века существенных новых работ в области простых чисел не было[8]. В 1640 году Пьер де Ферма сформулировал малую теорему Ферма, затем доказанную Лейбницем и Эйлером, и теорему о сумме двух квадратов, а также высказал предположение: все числа вида 2^{{2^{n}}}+1 являются простыми, и даже доказал это до n=4. Но уже для следующего числа Ферма {displaystyle 2^{2^{5}}+1} Эйлер доказал делимость на {displaystyle 641}. Новые простые числа в последовательности Ферма не найдены до сих пор. В то же время французский монах Марен Мерсенн обнаружил, что последовательность {displaystyle 2^{p}-1}, где p — простое, даёт также простое число[9] (числа Мерсенна).

Работа Эйлера в теории чисел вместила немало сведений о простых. Он показал, что бесконечный числовой ряд {displaystyle 1/2+1/3+1/5+1/7+1/11+...} — расходящийся. В 1747 году он доказал, что чётные совершенные числа являются значениями последовательности {displaystyle 2^{p-1}(2^{p}-1)}, где сомножитель является числом Мерсенна. В его переписке с Гольдбахом последний изложил свою знаменитую гипотезу о представлении любого чётного числа, начиная с четырёх, суммой двух простых[10]. Доказательство гипотезы пока не найдено.

С начала XIX века внимание многих математиков занимала проблема асимптотического распределения простых чисел[10]. Лежандр и Гаусс независимо друг от друга высказали предположение: плотность простых чисел в среднем близка к величине, обратно пропорциональной натуральному логарифму[11].

Долгое время простые числа считались малоприменимыми за пределами чистой математики. Ситуация изменилась в 1970-е годы, после появления концепций криптографии с открытым ключом, в которых простые числа составили основу первых алгоритмов шифрования, таких как RSA[12].

Разложение натуральных чисел в произведение простых[править | править код]

Представление натурального числа в виде произведения простых называется разложением на простые, или факторизацией числа. На настоящий момент не известны полиномиальные алгоритмы факторизации чисел, хотя и не доказано, что таких алгоритмов не существует. На предполагаемой большой вычислительной сложности задачи факторизации базируется криптосистема RSA и некоторые другие. Факторизация с полиномиальной сложностью теоретически возможна на квантовом компьютере с помощью алгоритма Шора[13].

Основная теорема арифметики[править | править код]

Основная теорема арифметики утверждает, что каждое натуральное число, большее единицы, представимо в виде произведения простых чисел, причём единственным способом с точностью до порядка следования сомножителей[14]. Таким образом, простые числа являются элементарными «строительными блоками» натуральных чисел. Например:

Как было показано в этом примере, один и тот же простой делитель может появляться несколько раз. Разложение:

n = p1 · p2 · … · pt

числа n на (конечное число) простых множителей p1, p2, … ,pt называется разложением на простые множители числа n. Основная теорема арифметики может быть перефразирована таким образом: любое разложение на простые числа будет тождественным с точностью до порядка делителей. На практике для большинства чисел есть много простых алгоритмов разложения на множители, все они дают один и тот же результат[13].

Простота единицы[править | править код]

Большинство древних греков даже не считало 1 числом, поэтому они не могли считать его простым[15]. К Средним векам и эпохе Возрождения многие математики включали 1 в качестве первого простого числа[16]. В середине XVIII века Христиан Гольдбах внёс в список 1 в качестве первого простого числа в своей знаменитой переписке с Леонардом Эйлером; однако сам Эйлер не считал 1 простым числом[17]. В XIX веке многие математики по-прежнему считали число 1 простым числом. Например, список простых чисел Деррика Нормана Лемера до {displaystyle 10006721} числа, переизданный в 1956 году, начинался с 1 в качестве первого простого числа. Говорят, что Анри Лебег является последним математиком, который назвал 1 простым[18]. К началу XX века математики стали приходить к консенсусу о том, что 1 не является простым числом, а скорее формирует свою специальную категорию — «единицу»[16].

Если считать 1 простым числом, то основная теорема Евклида об арифметике (упомянутая выше) не будет выполняться, как было указано в начале статьи. Например, число 15 может быть разложено как 3 · 5 и 1 · 3 · 5. Если бы 1 являлась простым числом, эти два варианта считались бы разными факторизациями 15; следовательно, утверждение этой теоремы пришлось бы изменить[16]. Точно так же решето Эратосфена работало бы неправильно, если бы 1 считалась простым: модифицированная версия решета, которая предполагает, что 1 является простым числом, исключает все множители, кратные 1 (то есть все остальные числа), и даёт на выходе только одно число — 1. Кроме того, простые числа имеют несколько свойств, которых нет у числа 1, такие как отношение числа к его соответствующему значению функции тождества Эйлера или суммы функции делителей[2].

Алгоритмы поиска и распознавания простых чисел[править | править код]

Простые способы нахождения начального списка простых чисел вплоть до некоторого значения дают решето Эратосфена, решето Сундарама и решето Аткина[19].

Однако, на практике вместо получения списка простых чисел зачастую требуется проверить, является ли данное число простым. Алгоритмы, решающие эту задачу, называются тестами простоты. Существует множество полиномиальных тестов простоты, но большинство их являются вероятностными (например, тест Миллера — Рабина) и используются для нужд криптографии[20]. В 2002 году было доказано, что задача проверки на простоту в общем виде полиномиально разрешима, но предложенный детерминированный тест Агравала — Каяла — Саксены имеет довольно большую вычислительную сложность, что затрудняет его практическое применение[21].

Для некоторых классов чисел существуют специализированные эффективные тесты простоты (см. ниже).

Тест простоты[править | править код]

Тестом простоты (или проверкой простоты) называется алгоритм, который, приняв на входе число, позволяет либо не подтвердить предположение о составности числа, либо точно утверждать его простоту. Во втором случае он называется истинным тестом простоты. Задача теста простоты относится к классу сложности P, то есть время работы алгоритмов её решения зависит от размера входных данных полиномиально, что было доказано в 2002 году[22]. Появление полиномиального алгоритма предсказывалось существованием полиномиальных сертификатов простоты и, как следствие, тем, что задача проверки числа на простоту принадлежала классам NP и co-NP одновременно.

Существующие алгоритмы проверки числа на простоту могут быть разделены на две категории: истинные тесты простоты и вероятностные тесты простоты. Результатом вычислений истинных тестов всегда является факт простоты либо составности числа. Вероятностный тест показывает, является ли число простым с некоторой вероятностью. Числа, удовлетворяющие вероятностному тесту простоты, но являющиеся составными, называются псевдопростыми[23]. Одним из примеров таких чисел являются числа Кармайкла[24].

Одним из примеров истинных тестов простоты является тест Люка-Лемера для чисел Мерсенна. Очевидный недостаток этого теста заключается в его применимости только к числам определённого вида. Среди других примеров можно привести основанные на малой теореме Ферма[25]

  • Тест Пепина для чисел Ферма
  • Теорема Прота для чисел Прота
  • Тест Агравала — Каяла — Саксены, первый универсальный, полиномиальный, детерминированный и безусловный тест простоты.
  • Тест Люка — Лемера — Ризеля

А также:

  • метод перебора делителей
  • Теорема Вильсона
  • Критерий Поклингтона
  • Тест Миллера
  • Тест Адлемана — Померанса — Румели, усовершенствованный[26] Коэном и Ленстрой
  • Тест простоты с использованием эллиптических кривых.

К вероятностным тестам простоты относят:

  • Тест Ферма
  • Тест Миллера — Рабина
  • Тест Соловея — Штрассена
  • Тест Бейли — Померанца — Селфриджа — Уогстаффа

Большие простые числа[править | править код]

Уже в течение многих столетий поиск «больших» простых чисел вызывает интерес математиков. В последние десятилетия эти исследования приобрели прикладное значение из-за применения таких чисел в ряде алгоритмов шифрования, таких как RSA[12].

В семнадцатом столетии Марен Мерсенн предположил, что числа вида 2^{n}-1 простые (при n ≤ 257) только для n равных 2, 3, 5, 7, 13, 17, 19, 31, 67, 127 и 257[11]. Проверка верности предположения была намного выше возможностей того времени. Только в XX веке было обнаружено, что гипотеза была ложной и, вероятно, сделана «слепо», поскольку Мерсенн не учел три случая (для n = 61, 89 и 107); кроме того, оказалось, что числа, соответствующие n = 67 и n = 257 — составные[11].

В 1876 году Эдуард Люка доказал, что число M 127 (39-значное число) — простое, оно оставалось самым большим известным простым числом до 1951 года, когда были найдены {displaystyle {frac {2^{148}+1}{17}}} (44 цифры) и, немного позднее, {displaystyle 180*(2^{127}-1)^{2}+1} (из 79 цифр) — последнее простое число, которое было найдено с помощью электронного калькулятора. С тех пор все последующие большие простые числа были обнаружены с помощью компьютера: с 1952 года (когда SWAC показал, что M 521 является простым), по 1996 год они были найдены суперкомпьютером, и все были простыми Мерсенна (найденные с использованием теста Люка-Лемера, специфического алгоритма для таких чисел), за исключением числа {displaystyle 391581*2^{216193}-1}, которое было рекордом между 1989 и 1992 годами[27].

Алгоритмы получения простых чисел[править | править код]

Некоторые задачи математики с использованием факторизации требуют ряд очень больших простых чисел, выбранных случайным образом. Алгоритм их получения, основанный на постулате Бертрана (Для любого натурального n ≥ 2 найдётся простое число p в интервале n < p < 2n.)[28]:

Алгоритм:

  1. Ввод: натуральное число N
  2. Решение (поиск случайного простого числа P)
    1. Pgets Функция генерации произвольного натурального числа на отрезке [N,2N]
    2. Если P составное, то
      1. Pleftarrow ,P+1
      2. Если P=2N то
        1. Pleftarrow ,N
    3. Возврат «P — случайное простое»

Время решения задачи этим алгоритмом не определено, но есть большая вероятность, что оно всегда является полиномиальным, пока имеется достаточно простых чисел, и они распределены более-менее равномерно. Для простых случайных чисел эти условия выполняются[21].

Наиболее эффективным средством построения простых чисел является несколько модифицированная малая теорема Ферма[26].

Пусть N, S — нечётные натуральные числа, N-1 = S*R, причем для каждого простого делителя q числа S существует целое число a такое, что

{displaystyle a^{N-1}=1{pmod {N}}}, {displaystyle gcd(a^{{frac {N-1}{q}}-1},n)=1}

Тогда каждый простой делитель p числа N удовлетворяет сравнению

{displaystyle p=1{pmod {2S}}}

Следствие. Если выполнены условия теоремы Ферма и {displaystyle Rleqslant 4S+2}, то N — простое число[26].

Покажем теперь, как с помощью последнего утверждения, имея большое простое число S, можно построить существенно большее простое число N. Выберем для этого случайным образом чётное число R на промежутке {displaystyle Rleqslant 4S+2} и положим {displaystyle N=SR+1}. Затем проверим число N на отсутствие малых простых делителей, разделив его на малые простые числа; испытаем N некоторое количество раз с помощью алгоритма Рабина. Если при этом выяснится, что N — составное число, следует выбрать новое значение R и опять повторить вычисления. Так следует делать до тех пор, пока не будет найдено число N, выдержавшее испытание алгоритмом Рабина достаточно много раз. В этом случае появляется надежда на то, что N — простое число, и следует попытаться доказать простоту с помощью тестов простоты[26].

Бесконечность множества простых чисел[править | править код]

Простых чисел бесконечно много. Это утверждение упоминается как теорема Евклида в честь древнегреческого математика Евклида, поскольку первое известное доказательство этого утверждения приписывается ему. Известно ещё много доказательств бесконечности простых чисел, в том числе аналитическое доказательство Эйлера, доказательство Гольдбаха на основе чисел Ферма[29], доказательство Фурстенберга с использованием общей топологии и элегантное доказательство Куммера.

Наибольшее известное простое[править | править код]

Издавна ведутся записи, отмечающие наибольшие известные на то время простые числа[30]. Один из рекордов поставил в своё время Эйлер, найдя простое число 231 − 1 = 2 147 483 647.

Наибольшим известным простым числом по состоянию на январь 2019 года является число Мерсенна M82 589 933 = 282 589 933 − 1. Оно содержит 24 862 048 десятичных цифр; в книге с записью этого числа было бы около девяти тысяч страниц. Его нашли 7 декабря 2018 года в рамках проекта по распределённому поиску простых чисел Мерсенна GIMPS. Предыдущее самое большое известное простое число, открытое в декабре 2017 года, было на 1 612 623 знака меньше[31].

Числа Мерсенна выгодно отличаются от остальных наличием эффективного теста простоты: теста Люка — Лемера. Благодаря ему простые числа Мерсенна давно удерживают рекорд как самые большие известные простые.

За нахождение простых чисел из более чем 100 000 000 и 1 000 000 000 десятичных цифр EFF назначила[32] денежные призы соответственно в 150 000 и 250 000 долларов США[33]. Ранее EFF уже присуждала призы за нахождение простых чисел из 1 000 000 и 10 000 000 десятичных цифр.

Простые числа специального вида[править | править код]

Существует ряд чисел, простота которых может быть установлена эффективно с использованием специализированных алгоритмов.

  • Числа Мерсенна — числа вида {displaystyle M_{n}=2^{n}-1}, где n — натуральное число[34]. При этом число Мерсенна может быть простым, только если n — простое число. Как уже было отмечено выше, эффективным тестом простоты является тест Люка — Лемера[35].
  • Числа Ферма — числа вида F_{n}=2^{2^{n}}+1, где n — неотрицательное целое число[36]. Эффективным тестом простоты является тест Пепина. По состоянию на февраль 2015 года известно только 5 простых чисел Ферма (для n = 0, 1, 2, 3, 4), двадцать восемь следующих чисел Ферма (до {displaystyle F_{32}} включительно) оказались составными[37], однако не доказано, что других простых чисел Ферма нет[38].
  • Числа Вудала — числа вида W_{n}=ncdot 2^{n}-1[39]. Эффективным тестом простоты является тест Люка — Лемера — Ризеля[40].
  • Числа Каллена — числа вида C_{n}=ncdot 2^{n}+1[41][42].
  • Числа Прота — числа вида P=kcdot 2^{n}+1, причём k нечётно и 2^{n}>k[43]. Эффективным тестом простоты для чисел Прота является тест Бриллхарта — Лемера — Селфриджа (англ. Brillhart–Lehmer–Selfridge test)[44]. Числа Каллена и числа Ферма являются частным случаем чисел Прота (соответственно при k = n и при k = 1, n=2^{m})[45].
  • Числа Миллса — числа вида P_{n}=[A^{3^{n}}], где A — константа Миллса[46].

Для поиска простых чисел обозначенных типов в настоящее время используются проекты распределённых вычислений GIMPS, PrimeGrid, Ramsey@Home, Seventeen or Bust, Riesel Sieve, Wieferich@Home.

Некоторые свойства[править | править код]

  • Если p — простое, и p делит ab, то p делит a или b. Доказательство этого факта было дано Евклидом и известно как лемма Евклида[7][47]. Она используется в доказательстве основной теоремы арифметики.
  • Кольцо вычетов mathbb {Z} _{n} является полем тогда и только тогда, когда n — простое[48].
  • Характеристика каждого поля — это ноль или простое число[48].
  • Если p — простое, а a — натуральное, то a^{p}-a делится на p (малая теорема Ферма)[49].
  • Если G — конечная группа, порядок которой |G| делится на p, то G содержит элемент порядка p (теорема Коши)[50].
  • Если G — конечная группа, и p^{n} — максимальная степень p, которая делит |G|, то G имеет подгруппу порядка p^{n}, называемую силовской подгруппой, более того, количество силовских подгрупп равно pk+1 для некоторого целого k (теоремы Силова)[51].
  • Натуральное p>1 является простым тогда и только тогда, когда (p-1)!+1 делится на p (теорема Вильсона)[52].
  • Если n>1 — натуральное, то существует простое p, такое, что n<p<2n (постулат Бертрана)[53].
  • Ряд чисел, обратных к простым, расходится[10]. Более того, при xto infty
    sum _{p<x}{frac {1}{p}} sim  ln ln x.
  • Любая арифметическая прогрессия вида a,a+q,a+2q,a+3q,..., где a,q>1 — целые взаимно простые числа, содержит бесконечно много простых чисел (теорема Дирихле о простых числах в арифметической прогрессии)[54].
  • Всякое простое число, большее 3, представимо в виде 6k+1 или 6k-1, где k — некоторое натуральное число. Отсюда, если разность между несколькими последовательными простыми числами (при k>1) одинакова, то она обязательно кратна 6 — например: 251-257-263-269; 199-211-223; 20183-20201-20219.
  • Если p>3 — простое, то p^{2}-1 кратно 24 (справедливо также для всех нечётных чисел, не делящихся на 3)[55].
  • Теорема Грина-Тао. Существуют сколь угодно длинные конечные арифметические прогрессии, состоящие из простых чисел[56].
  • Никакое простое число не может иметь вид n^{k}-1, где n>2, k>1. Иначе говоря, число, следующее за простым, не может быть квадратом или более высокой степенью с основанием, бо́льшим 2. Из этого следует также, что если простое число имеет вид 2^{k}-1, то k — простое (см. числа Мерсенна)[34].
  • Никакое простое число не может иметь вид n^{{2k+1}}+1, где n>1, k>0. Иначе говоря, число, предшествующее простому, не может быть кубом или более высокой нечётной степенью с основанием, бо́льшим 1[57].
  • Каждое простое число (кроме чисел вида {displaystyle 8n-1}) можно представить в виде суммы трех квадратов[58].

Применения[править | править код]

Простые числа являются фундаментальными компонентами во многих областях математики.

Арифметические функции[править | править код]

Арифметические функции, а именно функции, определённые на множестве натуральных чисел и принимающих значения во множестве комплексных чисел, играют решающую роль в теории чисел. В частности, среди них наиболее важными являются мультипликативные функции, то есть функции f, обладающие следующим свойством: если пара (a,b) состоит из взаимно простых чисел, то имеет место равенство[59]

{displaystyle f(ab)=f(a)f(b)}

Примерами мультипликативных функций являются функция Эйлера phi , которая ставит в соответствие числу n количество натуральных чисел, меньших n и взаимно простых с ним и количество делителей числа n[60]. Значение этих функций от степени простого числа:

  • Функция phi Эйлера:

{displaystyle phi (p^{m})=p^{m}-p^{m-1}}

  • Функция делителя:

{displaystyle sigma (p^{m})=m+1}

Арифметические функции можно легко вычислить, зная значения, которые они принимают для степеней простых чисел[59]. На самом деле из разложения натурального числа n на множители

{displaystyle n=p_{1}^{q_{1}}cdot ...cdot p_{a}^{q_{a}}}

мы имеем, что

{displaystyle f(n)=f(p_{1}^{q_{1}})cdot ...cdot f(p_{a}^{q_{a}})}

и следовательно, возвращаясь к задаче вычисления f(n) получается что вычислить f от каждой степени простого делителя обычно проще, чем вычислить f по общей формуле[61].

Например, чтобы узнать значение функции Эйлера phi от n = 450 = 2 × 3 2 × 5 2, достаточно вычислить

{displaystyle phi (450)=phi (2)cdot phi (3^{2})cdot phi (5^{2})=(2-1)cdot (9-3)cdot (25-5)=120}

Модульная арифметика[править | править код]

В модульной арифметике простые числа играют очень важную роль: кольцо вычетов mathbb {Z} /nmathbb {Z} является полем тогда и только тогда, когда n является простым[48]. Также существование первообразного корня кольца mathbb {Z} /nmathbb {Z} привязано к простым числам: оно существует, только если n — простое число, 1, 2, 4 или число в форме {displaystyle p^{n}circ 2p^{n}}, где p нечётно.

Одной из важнейших теорем модульной арифметики является малая теорема Ферма[52]. Эта теорема утверждает, что для любого простого числа р и любого натурального числа a имеем:

{displaystyle a^{p}equiv a{pmod {p}}}

или для любого простого р и любого натурального а не делящегося на р, справедливо:

{displaystyle a^{p-1}equiv 1{pmod {p}}}

Это свойство можно использовать для проверки того, что число не является простым. На самом деле, если n таково, что:

{displaystyle a^{n}not equiv a{pmod {n}}}

для некоторого натурального а, то n не может быть простым[52]. Однако это свойство не может быть использовано для проверки числа на простоту: есть некоторые числа, называемые числами Кармайкла (наименьшее — 561) для которых это будет неверно. Числом Кармайкла называется составное число, которое является псевдопростым числом по каждому основанию b, взаимно простому с n. В 1994 году Уильям Роберт Альфорд, Эндрю Гранвиль и Карл Померанс показали, что таких чисел бесконечно много[62].

Теория групп[править | править код]

Простые числа также играют основополагающую роль в алгебре. В теории групп группа, в которой каждый элемент является степенью простого числа р, называется р-группой[63]. P-группа является конечной тогда и только тогда, когда порядок группы (число её элементов) является степенью р. Примером бесконечной р-группы является p-группа Прюфера[64]. Известно, что p-группы имеют нетривиальный центр и, следовательно, не могут быть простыми (кроме группы с p элементами); если группа конечна, более того, все нормальные подгруппы пересекают центр нетривиальным образом.

Примером таких групп является циклическая группа умножения по модулю простого числа[65].

Все группы порядка p являются циклическими и поэтому абелевыми; также абелева каждая группа порядка p 2. Кроме того, любая конечная абелева группа изоморфна прямому произведению конечного числа циклических р-групп.

В теореме Коши утверждается, что если порядок конечной группы G делится на простое число p, то G содержит элементы порядка p. Эта теорема обобщается теоремами Силова[50].

Криптосистема с открытым ключом[править | править код]

Некоторые алгоритмы криптографии с открытым ключом, такие как RSA и обмен ключами Диффи-Хеллмана, основаны на больших простых числах (обычно 1024—2048 бит). RSA полагается на предположение, что намного проще (то есть более эффективно) выполнять умножение двух (больших) чисел x и y, чем вычислять взаимно простые x и y, если известно только их произведение xcdot y . Обмен ключами Диффи-Хеллмана основан на том, что существуют эффективные алгоритмы возведения в степень по модулю, а обратная операция — дискретного логарифмирования считается сложной[66][67].

RSA[править | править код]

Трудность факторизации больших чисел привела к разработке первого эффективного метода криптографии с открытым ключом — RSA[68]. В этой криптографической системе, человек, который должен получить зашифрованное сообщение, генерирует ключ: выбираются два различных случайных простых числа p и q заданного размера (обычно используются, 1024- или 2048-битные числа). Далее вычисляется их произведение {displaystyle n=p*q}, называемое модулем. Вычисляется значение функции Эйлера от числа n: {displaystyle phi (n)=(p-1)(q-1)}. Выбирается целое число e ({displaystyle 1<e<phi (n)}), взаимно простое со значением функции phi(n). Обычно в качестве e берут небольшие простые числа (например, простые числа Ферма). Число e называется открытой экспонентой (англ. public exponent). Вычисляется число d, называемое секретной экспонентой, мультипликативно обратное к числу e по модулю phi(n). Пара {displaystyle {e,n}} публикуется в качестве открытого ключа RSA (англ. RSA public key). Пара {displaystyle {d,phi (n)}} играет роль закрытого ключа RSA (англ. RSA private key) и держится в секрете[12].

Теоретически можно получить закрытый ключ из общедоступной информации: в настоящее время для этого требуется факторизация числа n, что делает передачу защищенного сообщения безопасной, если простые числа удовлетворяют определённым условиям и являются «достаточно большими». Пока не известно, существуют ли эффективные методы для расшифровки сообщения, не связанные с прямой атакой на факторизацию n, но было показано, что плохой выбор открытого ключа может сделать систему более уязвимой для таких атак[69].

В 1991 году RSA Security опубликовала список полупростых чисел, предлагая денежные призы за разложение некоторых из них на множители, с целью подтверждения безопасности метода и поощрения исследования в этой области: инициатива называлась Challenge RSA Factoring[70]. На протяжении многих лет некоторые из этих чисел были разложены, а для других проблема факторизации все ещё остается открытой; однако конкурс был завершен в 2007 году[70].

Формулы для нахождения простых чисел[править | править код]

В разное время предпринимались попытки указать выражение, значениями которого при разных значениях входящих в него переменных были бы простые числа[54].
Л. Эйлер указал многочлен textstyle n^{2}-n+41, принимающий простые значения при n = 0, 1, 2, …, 40. Однако при n = 41 значение многочлена является составным числом. Можно доказать, что не существует многочлена от одной переменной n, который принимает простые значения при всех целых n[54].
П. Ферма предположил, что все числа вида 22k + 1 простые; однако Эйлер опроверг эту гипотезу, доказав, что число 225 + 1 = 4 294 967 297 — составное[54].

Тем не менее, существуют многочлены, множество положительных значений которых при неотрицательных значениях переменных совпадает с множеством простых чисел. Одним из примеров является многочлен

{displaystyle {begin{aligned}{bigl (}k+2{bigr )}{bigl {}1&-{bigl [}wz+h+j-q{bigr ]}^{2}-{bigl [}(gk+2g+k+1)(h+j)+h-z{bigr ]}^{2}-{bigl [}2n+p+q+z-e{bigr ]}^{2}\&-{bigl [}16(k+1)^{3}(k+2)(n+1)^{2}+1-f^{2}{bigr ]}^{2}-{bigl [}e^{3}(e+2)(a+1)^{2}+1-o^{2}{bigr ]}^{2}-{bigl [}(a^{2}-1)y^{2}+1-x^{2}{bigr ]}^{2}\&-{bigl [}16r^{2}y^{4}(a^{2}-1)+1-u^{2}{bigr ]}^{2}-{bigl [}((a+u^{2}(u^{2}-a))^{2}-1)(n+4dy)^{2}+1-(x+cu)^{2}{bigr ]}^{2}-{bigl [}n+l+v-y{bigr ]}^{2}\&-{bigl [}(a^{2}-1)l^{2}+1-m^{2}{bigr ]}^{2}-{bigl [}ai+k+1-l-i{bigr ]}^{2}-{bigl [}p+l(a-n-1)+b(2an+2a-n^{2}-2n-2)-m{bigr ]}^{2}\&-{bigl [}q+y(a-p-1)+s(2ap+2a-p^{2}-2p-2)-x{bigr ]}^{2}-{bigl [}z+pl(a-p)+t(2ap-p^{2}-1)-pm{bigr ]}^{2}{bigr }}end{aligned}}}

содержащий 26 переменных и имеющий степень 25. Наименьшая степень для известных многочленов такого типа — 5 при 42 переменных; наименьшее число переменных — 10 при степени около 1,6·1045[71][72]. Этот результат является частным случаем доказанной Юрием Матиясевичем диофантовости любого перечислимого множества.

Интересно, что приведённый выше многочлен, который порождает простые числа, сам разлагается на множители. Заметим, что второй множитель этого многочлена (в фигурных скобках) имеет форму: единица минус сумма квадратов. Таким образом, многочлен может принимать положительные значения (при положительных k) только если, каждый из этих квадратов (то есть каждый многочлен в квадратных скобках) равен нулю. В этом случае выражение в фигурных скобках будет равно 1[73].

Открытые вопросы[править | править код]

Распределение простых чисел pn = fsn); Δsn = pn+1² — pn². Δpn = pn+1 — pn; Δpn = 2, 4, 6, … .

До сих пор существует много открытых вопросов относительно простых чисел, наиболее известные из которых были перечислены Эдмундом Ландау в 1912 году на Пятом Международном математическом конгрессе[74]:

  1. Проблема Гольдбаха (первая проблема Ландау): верно ли, что каждое чётное число, большее двух, может быть представлено в виде суммы двух простых чисел?
  2. Вторая проблема Ландау: бесконечно ли множество «простых близнецов» — пар простых чисел, разность между которыми равна 2[54]? В 2013 году математик Чжан Итан из университета Нью-Гэмпшира[75][76] доказал, что существует бесконечно большое количество пар простых чисел, расстояние между которыми не превышает 70 миллионов. Позже Джеймс Мэйнард улучшил результат до 600. В 2014 году проект Polymath[en] под руководством Теренса Тао несколько улучшили последний метод, заменив оценку расстояния на 246.
  3. Гипотеза Лежандра (третья проблема Ландау): верно ли, что для всякого натурального числа n между n^{2} и (n+1)^2 всегда найдётся простое число[77]?
  4. Четвёртая проблема Ландау: бесконечно ли множество простых чисел вида n^{2}+1, где n — натуральное число[54]?

Открытой проблемой является также существование бесконечного количества простых чисел во многих целочисленных последовательностях, включая числа Мерсенна[54], числа Фибоначчи, числа Ферма и др.

Вариации и обобщения[править | править код]

Неприводимые и простые элементы[править | править код]

В начале статьи было дано определение простого числа: натуральное число называется простым, если у него ровно два делителя — единица и само число. Аналогичное понятие можно ввести и в других алгебраических структурах; чаще всего рассматривается коммутативные кольца без делителей нуля (области целостности)[78][79]. У таких колец, однако, могут быть делители единицы, образующие мультипликативную группу. Например, в кольце целых чисел существуют два делителя единицы: +1 и -1. Поэтому все целые числа, кроме делителей единицы, имеют не два, а по меньшей мере четыре делителя; например, у числа 7 делителями являются {displaystyle 1;7;-1;-7.} Это означает, что обобщение понятия простого числа должно опираться на иные его свойства.

Аналогом простого числа для области целостности является неприводимый элемент, который определяется следующим образом[80].

Для целых чисел это определение означает, что неприводимыми элементами являются простые натуральные числа, а также противоположные им.

Из определения следует, что множество делителей неприводимого элемента p состоит из двух частей: все делители единицы и произведения p на все делители единицы (эти произведения называются элементами, ассоциированными с p). То есть количество делителей неприводимого p, если оно конечно, вдвое больше количества делителей единицы в кольце.

Важное значение имеет аналог основной теоремы арифметики, который в обобщённом виде формулируется следующим образом[81]:

Кольцо называется факториальным, если в нём каждый ненулевой элемент, не являющийся делителем единицы, может быть представлен в виде произведения неприводимых элементов, причём это представление единственно с точностью до перестановки сомножителей и их ассоциированности (умножения на делители единицы).

Не всякая область целостности факториальна, см. контрпример. Евклидово кольцо всегда факториально[82].

Существует другое, более узкое обобщение понятия простого числа, называемое простым элементом[80].

Простой элемент всегда неприводим. В самом деле, если элемент p простой и {displaystyle p=ab,} то по определению простого элемента один из сомножителей, пусть это будет a, делится на p, то есть {displaystyle a=pq.} Тогда {displaystyle p=ab=pqb} или, сокращая на p (в области целостности сокращение ненулевого множителя всегда возможно): {displaystyle 1=qb,} то есть b является делителем единицы.

Обратное, вообще говоря, неверно, неприводимый элемент может не быть простым, если кольцо не является факториальным. Пример[83]: рассмотрим кольцо чисел вида {displaystyle a+b{sqrt {5}}i,} где a,b — целые числа. Число 3 в нём неприводимо, так как у него только 4 делителя: {displaystyle 3,1,-3,-1}. Однако оно не является простым элементом, в чём убеждает равенство:

{displaystyle left(2+{sqrt {5}}iright)left(2-{sqrt {5}}iright)=9}

Число 3 делит правую часть равенства, но не делит ни одного из сомножителей. Можно из этого факта сделать вывод, что рассмотренное кольцо не факториально; и в самом деле, равенство {displaystyle 6=2cdot 3=(1-i{sqrt {5}})(1+i{sqrt {5}})} показывает, что разложение на неприводимые множители в этом кольце не однозначно.

Примеры[править | править код]

Кольцо целых чисел факториально. В нём, как уже упоминалось выше, два делителя единицы.

Гауссовы целые числа[править | править код]

Кольцо гауссовых чисел состоит из комплексных чисел вида {displaystyle a+bi,} где a,b — целые числа. Делителей единицы четыре: {displaystyle 1;-1;i;-i.} Это кольцо факториально, неприводимыми элементами являются часть обычных простых чисел и «простые гауссовы» (например, 1+i). См. критерий простоты гауссова числа.

Пример разложения для числа 2, которое в кольце гауссовых чисел не является простым: {displaystyle 2=(1+i)(1-i)=i(1-i)(1-i)} — неединственность разложения здесь кажущаяся, поскольку 1-i ассоциирована с 1+i, согласно равенству: {displaystyle 1-i=(-i)(1+i).}

Целые числа Эйзенштейна[править | править код]

Кольцо целых чисел Эйзенштейна {displaystyle mathbb {Z} [omega ]} состоит из комплексных чисел следующего вида[84]:

{displaystyle z=a+bomega ,} где a,b — целые числа, {displaystyle omega ={frac {1}{2}}(-1+i{sqrt {3}})=e^{2pi i/3}} (кубический корень из единицы),

В этом кольце шесть делителей единицы: (±1, ±ω, ±ω2), оно евклидово и поэтому факториально. Неприводимые элементы (они же простые элементы) кольца называются простыми числами Эйзенштейна.

Критерий простоты: целое число Эйзенштейна {displaystyle z=a+bomega } является простым числом Эйзенштейна тогда и только тогда, когда выполняется одно из следующих взаимоисключающих условий:

  1. z ассоциировано с натуральным простым числом вида {displaystyle 3n-1.}
  2. {displaystyle |z|^{2}=a^{2}-ab+b^{2}} (норма z) является натуральным простым вида 3n или 3n+1.

Отсюда следует, что норма любого целого числа Эйзенштейна является либо простым натуральным числом, либо квадратом простого натурального числа[84].

Числа, ассоциированные или комплексно-сопряжённые с простыми числами Эйзенштейна, также являются простыми числами Эйзенштейна.

Кольцо многочленов[править | править код]

Большое значение в алгебре имеет кольцо многочленов K[x], образованное многочленами с коэффициентами из некоторого поля K. Делителями единицы являются здесь ненулевые константы (как многочлены нулевой степени). Кольцо многочленов евклидово и поэтому факториально. Если в качестве K взять поле вещественных чисел, то неприводимыми будут все многочлены 1-й степени и те многочлены 2-й степени, у которых нет вещественных корней (то есть их дискриминант отрицателен)[85].

См. также[править | править код]

  • Незаконное простое число
  • Суперпростое число
  • Полупростое число
  • Примориал
  • Простые числа, отличающиеся на шесть
  • Случайное простое число
  • Составное число
  • Список простых чисел
  • Уникальное простое

Примечания[править | править код]

  1. 1 2 3 Простое число // Математическая энциклопедия (в 5 томах). — М.: Советская Энциклопедия, 1977. — Т. 4.
  2. 1 2 “«Arguments for and against the primality of 1 Архивная копия от 24 февраля 2021 на Wayback Machine». (англ.)
  3. Последовательность A000040 в OEIS. См. также список простых чисел
  4. Гарднер, Мартин. От мозаик Пенроуза к надёжным шифрам = Penrose Tiles to Trapdoor Ciphers / пер. с англ. Ю. А. Данилова. — М.: Мир, 1993. — 416 с. — 10 000 экз. — ISBN 5-03-001991-X.
  5.  (фр.) Préhistoire de la géométrie : le problème des sources (PDF) (недоступная ссылка). Site de l’IREM de La Réunion. Voir aussi « Les fables d’Ishango, ou l’irrésistible tentation de la mathématique-fiction» Архивная копия от 22 декабря 2017 на Wayback Machine, analyse par O. Keller sur Bibnum
  6. Egyptian Unit Fractions // Mathpages. Архивировано 1 апреля 2016 года.
  7. 1 2 Рыбников К. Русские издания «Начал» Евклида // Успехи математических наук. — Российская академия наук, 1941. — № 9. — С. 318—321.
  8. John J. O’Connor, Edmund F. Robertson. Prime numbers (англ.). MacTutor.
  9. List of Known Mersenne Prime Numbers. Great Internet Mersenne Prime Search. Архивировано 15 марта 2016 года.
  10. 1 2 3 Apostol, Tom M. Introduction to analytic number theory. — New York: Springer-Verlag, 1976. — xii, 338 pages с. — ISBN 0387901639. Архивная копия от 28 апреля 2020 на Wayback Machine
  11. 1 2 3 Du Sautoy, Marcus. L’enigma dei numeri primi. — Milano: Rizzoli, 2005. — 606 p. с. — ISBN 8817008435.
  12. 1 2 3 Menezes, A. J. (Alfred J.), 1965-. Handbook of applied cryptography. — Boca Raton: CRC Press, 1997. — xxviii, 780 pages с. — ISBN 9780849385230.
  13. 1 2 Ишмухаметов Ш. Т. Методы факторизации натуральных чисел: учебное пособие // Казань: Казанский университет. — 2011. — С. 190.
  14. Dudley, Underwood (1978), Elementary number theory (2nd ed.), W. H. Freeman and Co., ISBN 978-0-7167-0076-0, Section 2, Theorem 2 (англ.)
  15. См, например, David E. Joyce’s комментарий на Начала (Евклид), Книга VII, определения 1 и 2 Архивная копия от 5 августа 2011 на Wayback Machine.
  16. 1 2 3 Why is the number one not prime? (from the Prime Pages’ list of frequently asked questions) by Chris K. Caldwell. Архивная копия от 19 апреля 2015 на Wayback Machine (англ.)
  17. See for instance: L. Euler. Commentarii academiae scientiarum Petropolitanae 9 (1737), 160—188. Variae observationes circa series infinitas, Theorema 19, p.187. Архивная копия от 5 октября 2013 на Wayback Machine (англ.)

  18. Derbyshire, John (2003), The Prime Number Theorem, Prime Obsession: Bernhard Riemann and the Greatest Unsolved Problem in Mathematics, Washington, D.C.: Joseph Henry Press, с. 33, ISBN 978-0-309-08549-6, OCLC 249210614 (англ.)
  19. David Gries, Jayadev Misra. A Linear Sieve Algorithm for Finding Prime Numbers. — 1978.
  20. Knuth, Donald Ervin, 1938-. The art of computer programming. — Reading, Mass.: Addison-Wesley Pub. Co, ©1973-©1981. — 4 volumes с. — ISBN 0201896842. Архивная копия от 15 июня 2020 на Wayback Machine
  21. 1 2 Vasilenko, O. N. (Oleg Nikolaevich). Teoretiko-chislovye algoritmy v kriptografii. — Moskva: MT︠S︡NMO. Moskovskiĭ t︠s︡entr nepreryvnogo matematicheskogo obrazovanii︠a︡, 2006. — 333 pages с. — ISBN 5940571034.
  22. Б. Шнайер. Прикладная криптография. — С. 296—300.
  23. Кормен Т., Лейзер Ч. Алгоритмы. Построение и анализ. — М.: МЦНМО, 2002. — С. 765—772.
  24. Crandall R., Pomerance C. Prime Numbers: A Computational Perspective. — Springer, 2005.
  25. Introduction to algorithms. — 2nd ed. — Cambridge, Mass.: MIT Press, 2001. — xxi, 1180 pages с. — ISBN 0262032937. Архивная копия от 29 января 2010 на Wayback Machine
  26. 1 2 3 4 Нестеренко Ю. В. Введение в криптографию. — Питер, 2001. — 288 с.
  27. Chris Caldwell. The Largest Known Prime by Year: A Brief History (англ.). The Prime Pages. Дата обращения: 8 марта 2010. Архивировано 19 августа 2013 года.
  28. Jitsuro Nagura. On the interval containing at least one prime number (EN) // Proceedings of the Japan Academy. — 1952. — Т. 28, вып. 4. — С. 177—181. — ISSN 0021-4280. — doi:10.3792/pja/1195570997. Архивировано 17 ноября 2017 года.
  29. Letter Архивная копия от 11 июня 2015 на Wayback Machine in Латынь from Goldbach to Euler, July 1730.
  30. Рекорды простых чисел по годам. Дата обращения: 8 марта 2010. Архивировано 19 августа 2013 года.
  31. Starr, Michelle. The Largest Prime Number to Date Has Been Discovered And It’s Hurting Our Brains (англ.), ScienceAlert. Архивировано 6 января 2018 года. Дата обращения: 6 января 2018.
  32. EFF Cooperative Computing Awards Архивная копия от 9 ноября 2008 на Wayback Machine (англ.)
  33. Юлия Рудый. Профессор из США определил самое большое простое число. Вести.Ru (7 февраля 2013). Дата обращения: 25 февраля 2018. Архивировано 26 февраля 2018 года.
  34. 1 2 Последовательность A001348 в OEIS
  35. Последовательность A000668 в OEIS: простые числа Мерсенна
  36. Последовательность A000215 в OEIS
  37. Keller, Wilfrid (February 15, 2015), Prime Factors of Fermat Numbers, <http://www.prothsearch.net/fermat.html#Summary>. Проверено 1 марта 2016. Архивная копия от 10 февраля 2016 на Wayback Machine
  38. Виолант-и-Хольц, Альберт. Загадка Ферма. Трёхвековой вызов математике. — М.: Де Агостини, 2014. — С. 78. — 151 с. — (Мир математики: в 45 томах, том 9). — ISBN 978-5-9774-0625-3.
  39. Последовательность A003261 в OEIS
  40. Последовательность A050918 в OEIS: простые числа Вудала
  41. Последовательность A002064 в OEIS
  42. Последовательность A050920 в OEIS: простые числа Каллена
  43. Последовательность A080075 в OEIS
  44. John Brillhart; Derrick Henry Lehmer; John Selfridge. New Primality Criteria and Factorizations of 2^m ± 1 (англ.) // Mathematics of Computation  (англ.) (рус. : journal. — 1975. — April (vol. 29). — P. 620—647. — doi:10.1090/S0025-5718-1975-0384673-1.
  45. Последовательность A080076 в OEIS: простые числа Прота
  46. Caldwell, Chris K. & Cheng, Yuanyou (2005), Determining Mills’ Constant and a Note on Honaker’s Problem, Journal of Integer Sequences Т. 8 (5.4.1), <http://www.cs.uwaterloo.ca/journals/JIS/VOL8/Caldwell/caldwell78.html> Архивная копия от 5 июня 2011 на Wayback Machine
  47. Dudley, Underwood (1978), Elementary number theory (2nd ed.), W. H. Freeman and Co., ISBN 978-0-7167-0076-0, Section 2, Lemma 5 (англ.)
  48. 1 2 3 Степанов С. А. Сравнения. — М.: «Знание», 1975. — 64 с.
  49. Винберг, 2008, с. 43.
  50. 1 2 Курош А. Г. Теория групп. 3-е изд., М.: Наука, 1967.
  51. А. И. Кострикин. Введение в алгебру, III часть. М.: Физматлит, 2001.
  52. 1 2 3 Виноградов И. М. Основы теории чисел. — 5 изд.. — М.Л.: Гостехиздат, 1952.
  53. Chris Caldwell, Bertrand’s postulate Архивная копия от 22 декабря 2017 на Wayback Machine at Prime Pages glossary.
  54. 1 2 3 4 5 6 7 Энциклопедический словарь юного математика, 1985.
  55. Доказательство. Нечётное число p, не кратное 3, равно 1 или 2 по модулю 3 и равно 1, 3, 5 или 7 по модулю 8. При возведении в квадрат это даёт 1 по модулю 3 и 1 по модулю 8. Вычитая 1, получаем 0 по модулю 3 и 0 по модулю 8. Следовательно, p^{2}-1 кратно 3 и кратно 8; следовательно, оно кратно 24
  56. Weisstein, Eric W. Green-Tao Theorem (англ.) на сайте Wolfram MathWorld.
  57. Эти 2 свойства непосредственно следуют из формул разложения суммы и разности степеней
  58. Энциклопедический словарь юного математика, 1985, с. 332.
  59. 1 2 Graham, Ronald L. (1935- ). Konkretnaâ matematika : osnovanie informatiki. — Moskva: Izdatelʹstvo “Mir”, 1998. — 703, [1] s. с. — ISBN 5030017933.
  60. Sandifer, Charles Edward, 1951-. The early mathematics of Leonhard Euler. — Washington, D.C.: Mathematical Association of America, 2007. — xix, 391 pages с. — ISBN 0883855593.
  61. Bach, Eric. Algorithmic number theory. — Cambridge, Mass.: MIT Press, ©1996-. — volumes <1> с. — ISBN 0262024055.
  62. W. R. Alford, Andrew Granville, Carl Pomerance. There are Infinitely Many Carmichael Numbers // Annals of Mathematics. — 1994. — Т. 139, вып. 3. — С. 703—722. — doi:10.2307/2118576. Архивировано 26 февраля 2019 года.
  63. Charles C. Sims. Enumerating p-Groups (англ.) // Proceedings of the London Mathematical Society. — 1965-01-01. — Vol. s3—15, iss. 1. — P. 151—166. — ISSN 1460-244X. — doi:10.1112/plms/s3-15.1.151. Архивировано 23 декабря 2017 года.
  64. Jacobson, Nathan, 1910-1999. Basic algebra. — 2nd ed., Dover ed. — Mineola, N.Y.: Dover Publications, 2009. — 2 volumes с. — ISBN 9780486471877.
  65. Сагалович Ю.Л. Введение в алгебраические коды. — 2011. — 302 с. Архивная копия от 25 декабря 2017 на Wayback Machine
  66. Ferguson, Niels. Practical cryptography. — New York: Wiley, 2003. — xx, 410 pages с. — ISBN 0471223573. Архивная копия от 10 июня 2009 на Wayback Machine
  67. W. Diffie, M. Hellman. New directions in cryptography // IEEE Transactions on Information Theory. — November 1976. — Т. 22, вып. 6. — С. 644—654. — ISSN 0018-9448. — doi:10.1109/tit.1976.1055638. Архивировано 28 декабря 2017 года.
  68. Bakhtiari, Maarof, 2012, p. 175.
  69. Boneh D. Twenty Years of attacks on the RSA Cryptosystem (англ.) // Notices of the American Mathematical Society / F. Morgan — AMS, 1999. — Vol. 46, Iss. 2. — P. 203–213. — ISSN 0002-9920; 1088-9477
  70. 1 2 RSA Laboratories, The RSA Factoring Challenge Архивировано {{{2}}}.. Опубликовано 18 мая 2007.
  71. Jones J. P.,
    Sato D., Wada H., Wiens D.
    Diophantine representation of the set of prime numbers (англ.) // Amer. Math. Mon. : journal. — 1976. — Vol. 83, no. 6. — P. 449—464. Архивировано 31 марта 2010 года.
  72. Yuri Matiyasevich, Diophantine Equations in the XX Century (недоступная ссылка)
  73. Matijasevic’s polynomial Архивная копия от 6 августа 2010 на Wayback Machine. The Prime Glossary.
  74. Weisstein, Eric W. Landau’s Problems (англ.) на сайте Wolfram MathWorld.
  75. Неизвестный математик совершил прорыв в теории простых чисел-близнецов. Дата обращения: 20 мая 2013. Архивировано 7 июня 2013 года.
  76. Bounded Gaps Between Primes. Дата обращения: 21 мая 2013. Архивировано 18 мая 2013 года.
  77. Weisstein, Eric W. Гитотеза Лежандра (англ.) на сайте Wolfram MathWorld.
  78. Обобщение на произвольные полугруппы см. в книге Куроша.
  79. Ван дер Варден, 2004, с. 75.
  80. 1 2 Курош, 1973, с. 82—83.
  81. Ленг, 1967, с. 89.
  82. Ван дер Варден, 2004, с. 77—78.
  83. William W. Adams, Larry Joel Goldstein (1976), Introduction to Number Theory, p. 250, Prentice-Hall, Inc., ISBN 0-13-491282-9
  84. 1 2 Eisenstein Integer–from MathWorld. Дата обращения: 23 декабря 2017. Архивировано 15 декабря 2020 года.
  85. Винберг Э. Б. Алгебра многочленов. — М.: Просвещение, 1980. — С. 122—124. — 176 с.

Литература[править | править код]

  • Ван дер Варден. Алгебра. Определения, теоремы, формулы. — СПб.: Лань, 2004. — 624 с. — ISBN 5-8114-0552-9.
  • Василенко О. Н. Теоретико-числовые алгоритмы в криптографии. — М.: МЦНМО, 2003. — 328 с. — ISBN 5-94057-103-4. Архивная копия от 27 января 2007 на Wayback Machine
  • Винберг Э. Б. Малая теорема Ферма и ее обобщения // Математическое просвещениеМ.: Изд-во МЦНМО, 2008. — Т. 12. — С. 43—53.
  • Гальперин Г. Просто о простых числах // Квант. — № 4. — С. 9—14,38.
  • Генри С. Уоррен, мл. Глава 16. Формулы для простых чисел // Алгоритмические трюки для программистов = Hacker’s Delight. — М.: «Вильямс», 2007. — 288 с. — ISBN 0-201-91465-4.
  • Карпушина Н. Палиндромы и «перевёртыши» среди простых чисел // Наука и жизнь. — 2010. — № 5.
  • Кордемский Б. А. Математическая смекалка. — М.: ГИФМЛ, 1958. — 576 с.
  • Кормен Т., Лейзер Ч. Глава 33.8. Проверка чисел на простоту // Алгоритмы. Построение и анализ. — М.: МЦНМО, 2002. — С. 765—772. — ISBN 5-900916-37-5.
  • Крэндалл Р., Померанс К. Простые числа. Криптографические и вычислительные аспекты = Prime Numbers: A Computational Perspective. — М.: УРСС, Либроком, 2011. — 664 с. — ISBN 978-5-397-02060-2.
  • Курош А. Г. Лекции по общей алгебре. — 2-е изд.. — Наука, 1973.
  • Ленг С. Алгебра. — М.: Мир, 1967.
  • Матиясевич Ю.. Формулы для простых чисел // Квант. — 1975. — № 5. — С. 5—13.
  • Нестеренко Ю. В. Алгоритмические проблемы теории чисел // Введение в криптографию / Под редакцией В. В. Ященко. — Питер, 2001. — 288 с. — ISBN 5-318-00443-1.
  • Цагер Д. Первые 50 миллионов простых чисел // Успехи математических наук. — Российская академия наук, 1984. — Т. 39, № 6(240). — С. 175—190.
  • Черёмушкин А. В. Лекции по арифметическим алгоритмам в криптографии. — М.: МЦНМО, 2002. — 104 с. — 2000 экз. — ISBN 5-94057-060-7. Архивировано 31 мая 2013 года..
  • Простое число // Энциклопедический словарь юного математика / Сост. А. П. Савин. — М.: Педагогика, 1985. — С. 262—263. — 352 с.
  • Энрике Грасиан . Простые числа. Долгая дорога к бесконечности. — Де Агостини, 2014. — Т. 3. — 148 с. — (Мир математики). — ISBN 978-5-9774-0682-6. — ISBN 978-5-9774-0637-6.
  • Bakhtiari M., Maarof M. A. Serious Security Weakness in RSA Cryptosystem (англ.) // International Journal of Computer Science Issues — 2012. — Vol. 9, Iss. 1, No 3. — P. 175—178. — ISSN 1694-0814; 1694-0784
  • Crandall R., Pomerance C. Глава 3. «Recognizing Primes and Composites». Глава 4. «Primality Proving» // Prime Numbers: A Computational Perspective. — Springer, 2005. — С. 117—224. — ISBN 0-387-25282-7.

Ссылки[править | править код]

  • Кноп К. В погоне за простотой.
  • The Prime Pages (англ.) — база данных наибольших известных простых чисел (англ.).
  • Геометрия простых и совершенных чисел (исп.).
  • Скрипт визуализации
  • Форум искателей простых чисел (англ.).

Степан Кузнецов
«Квант» №10, 2020

Как быстро проверить, является ли данное натуральное число n простым? Такая задача часто возникает на практике. Один из примеров — шифр RSA1. Это асимметричный шифр: шифрование производится закрытым ключом (известен только отправителю), а расшифровка — открытым (известен всем). Чтобы сгенерировать такую пару ключей для шифра RSA, нужно выбрать два больших числа p и q, причем оба числа должны быть простыми — иначе шифр невозможно будет расшифровать.

Проще всего действовать по определению, перебирая все числа от 1 до n и проверяя, не является ли какое-то из них делителем. Этот способ можно немного усовершенствовать: если n = ab, то меньший из двух делителей a и b окажется меньше или равен (sqrt{n}). Значит, достаточно перебирать числа не до n, а всего лишь до (sqrt{n}).

Время работы такого алгоритма, однако, будет огромным. Например, если в двоичной записи числа n тысяча разрядов (это минимальная длина криптографического ключа RSA, гарантирующая безопасность), то число проверок равно (sqrt{n}) ≈ 2500 ≈ 3 ⋅ 2150. Если даже одна проверка делается за 1/109 секунды (частота 1 гигагерц), то для выяснения простоты числа n понадобится 3 ⋅ 10141 c ≈ 10134 лет! Можно попытаться «подобраться» к числу n с помощью решета Эратосфена, однако серьезного уменьшения времени работы это не даст. Нужны более глубокие идеи.

Начнем с малой теоремы Ферма (МТФ): если n — простое число, то для любого a от 1 до n − 1 число an − 1 при делении на n дает остаток 1 (т. е. a n − 1 ≡ 1(mod n)). Значит, если мы вдруг нашли такое a, что остаток оказался другим, то n заведомо не простое! Разумеется, перебирать все a в попытке найти нужное — затея не лучше, чем перебирать возможные делители. Но мы попробуем угадать a, выбирая его случайным образом.

Эта идея не такая безнадежная, как может показаться на первый взгляд. Действительно, пусть оказалось, что a0n − 1 (not≡) 1(mod n), а a1n − 1
≡ 1(mod n) (т. е. если мы выбрали a0 , то мы угадали, а если выбрали a1, то нет). Тогда

(a0 ⋅ a1)n − 1 ≡ a0n − 1 ⋅ a1n − 1a0n − 1 (not≡) 1(mod n)

. Таким образом, если мы угадали с выбором a0, то также удачным будет выбор a0a1. Более того, если a0 взаимно просто с n, то для разных значений a1 числа a1a2 будут различны по модулю n. Таким образом, среди всех чисел от 1 до n − 1, взаимно простых с n, окажется не менее половины «удачных»: действительно, каждому «неудачному» числу a1 соответствует как минимум одно уникальное «удачное», равное остатку от деления a0 ⋅ a1 на n (где a0 — одно фиксированное «удачное» число).

Итак, алгоритм — его называют тестом Ферма — действует так. Выбираем случайное a в диапазоне от 2 до n − 1 (число 1 выбирать бессмысленно). Если a не взаимно просто с n — это можно быстро проверить с помощью алгоритма Евклида2 , то n заведомо составное. Иначе вычисляем остаток от деления a n − 1 на n, и если он не равен 1, то n — составное. Если же равен, то вероятность того, что мы выбрали «неудачное» a, а для другого a получился бы неединичный остаток, не превосходит 1/2. Возвести a в большую степень можно методом последовательного деления показателя пополам («быстрое возведение в степень»); при этом после каждого шага лучше брать остаток по модулю n, чтобы избежать слишком больших чисел. Повторяя алгоритм k раз, каждый раз выбирая случайное a независимо, мы уменьшим эту вероятность до 1/2k , что очень быстро стремится к нулю с ростом k.

Подведем итог. Если тест Ферма отвечает, что n составное, то он совершенно точно прав; если говорит, что простое — то может ошибиться, но с очень малой вероятностью. Эту вероятность мы контролируем за счет изменения параметра k — например, можем сделать ее меньше, чем вероятность сбоя техники. Тогда на практике алгоритм будет неотличим от точного — а работает он намного быстрее, чем перебор делителей!

К сожалению, у теста Ферма есть фатальный недостаток. Существуют так называемые числа Кармайкла: эти вредные числа не являются простыми, но удовлетворяют МТФ для любого a, взаимно простого с n. В таком случае мы не сможем найти ни одного «удачного» a0, и приведенное выше рассуждение недействительно. (Вероятность же случайно наткнуться на число a, не взаимно простое с n, мала.) Самые маленькие числа Кармайкла: 561, 1105, 1729. Числа Кармайкла относительно редки, однако, к сожалению, их бесконечно много3. (Иначе можно было бы «починить» тест Ферма, добавив в начале сверку с конечным списком чисел Кармайкла.)

Тем не менее, основную идею теста Ферма можно «спасти». Один из способов это сделать дает тест Соловея — Штрассена. Поскольку нас интересует случай нечетного n (иначе оно заведомо составное, если не равно 2), то n − 1 нацело делится на 2. Если n простое, то в силу МТФ имеем (left ( a^{frac{n-1}{2}}-1 right ) left ( a^{frac{n-1}{2}}+1 right )=a^{n-1}-1equiv0pmod{n}), откуда (a^{frac{n-1}{2}}equivpm1pmod{n}). Более того, знак (+ или –) можно вычислить, зная a и n — это символ Якоби (left (frac{a}{n} right )). Таким образом, мы получили новое сравнение, нарушение которого означает непростоту n, а именно: (a^{frac{n-1}{2}}equivleft ( frac{a}{n} right )pmod{n}). Теперь, однако, никакого аналога чисел Кармайкла нет: оказывается, что для составного n всегда найдется a0, для которого (a_0^{frac{n-1}{2}}notequivleft ( frac{a}{n} right )pmod{n}). Далее, как и для теста Ферма, можно доказать, что таких «удачных» a не менее половины среди всех чисел от 1 до n − 1, взаимно простых с n. Доказательства сформулированных выше фактов элементарные, но довольно технические. Их можно найти, например, в книге О. Н. Василенко «Теоретико-числовые алгоритмы в криптографии» (М.: МЦНМО, 2003).

Итак, получается алгоритм: выбираем случайное a от 2 до n − 1, взаимно простое с n (если нашлось не взаимно простое — немедленно отвечаем, что n составное); вычисляем остаток от деления (a^{frac{n-1}{2}}) на n и сравниваем его по модулю n с (left ( frac{a}{n} right )) . Если ответ «не равно», то a составное, иначе — предположительно простое. Во втором случае вероятность ошибки равна 1/2, теперь уже для любого n. Повторяя алгоритм k раз, снижаем вероятность ошибки до 1/2k .

Существуют и другие вероятностные тесты на простоту. А можно ли построить алгоритм проверки на простоту, который работает быстро и при этом выдает ответ точно, а не с некоторой (пусть и сколь угодно близкой к 1) вероятностью? Такие тесты называются детерминированными. Таков тест Миллера (1976). Этот тест быстрый и детерминированный, однако доказательство того, что он работает правильно, опирается на недоказанное утверждение — расширенную гипотезу Римана. Быстрый детерминированный тест, корректность которого доказана полностью, был предложен сравнительно недавно — это тест Агравала — Каяла — Саксены или AKS-тест (2002). Однако вероятностные тесты все еще работают быстрее, чем AKS-тест.


1 Подробнее о шифре RSA читайте в статье В.А. Успенского «Как теория чисел помогает в шифровальном деле» (Соросовский образовательный журнал, 1996, №6).

2 Вагутен В. Алгоритм Евклида и основная теорема арифметики («Квант», 1972, №6); Абрамов С. Самый знаменитый алгоритм («Квант», 1985, №11).

3 Alford W.R., Granville A., Pomerance C. There are infinitely many Carmichael numbers. Annals of Mathematics, 1994, vol. 139, p. 703–722.

Является ли число простым

  1. Главная
  2. /
  3. Математика
  4. /
  5. Арифметика
  6. /
  7. Является ли число простым

Чтобы узнать является ли число простым или нет воспользуйтесь нашим онлайн сервисом:

Введите число:

Определить

Просто введите число и получите результат.

Теория

Что такое простое число

Простое число – это положительное целое число больше 1, которое можно без остатка поделить только на 1 и на само себя.

Как определить является ли число простым

Чтобы определить является ли число простым, необходимо его поделить на 2, затем на 3, 4, … n, до тех пор, пока n не станет равным самому числу. Если это число разделится без остатка только на само себя, то оно является простым.

Пример №1

Определим является ли число 5 простым:

5 ÷ 2 = 2.5

5 ÷ 3 = 1.666

5 ÷ 4 = 1.25

5 ÷ 5 = 1

Делаем вывод, что число 5 является простым.

Пример №2

Определим является ли число 6 простым:

6 ÷ 2 = 3

Так как 6 поделилось на 2 без остатка, можно сделать вывод, что число 6 не является простым.

См. также

Добавить комментарий