Як перевірити, чи є число простим
Прості числа - це числа, які діляться тільки на себе і на 1- всі інші числа називаються складовими числами. Існує безліч способів визначення того, чи є число простим. Деякі способи є відносно простими, але вони не підходять для великих чисел. Інші способи, застосовні для великих чисел, фактично являють собою імовірнісні алгоритми, які іноді помилково характеризують число як просте або складене.
Кроки
Метод 1 з 4: Перебір дільників
Перебір дільників - найлегший спосіб визначити простоту числа. У разі малих чисел це, мабуть, також і найшвидший спосіб. Він заснований на визначенні простого числа: число є простим, якщо воно не має дільників крім самого себе і одиниці.
1
Нехай n - проверяемое число. Відповідно до цього методу ви повинні розділити число n на всі можливі цілі дільники. При великих значеннях n, наприклад, n = 101, перевірка кожного дільника займе багато часу. Але існують способи зменшити кількість дільників, які потрібно перевірити.2
Визначте, чи є число n парних. Будь-яке парне число ділиться на 2. Якщо число n - парне, то можна відразу заявити, що воно не є простим (тобто є складовим числом). Для швидкого визначення парності числа зверніть увагу на його останню цифру. Якщо остання цифра 2, 4, 6, 8,0, то число є парним і не є простим.- Єдиний виняток з цього правила - число 2. Так як воно ділиться без остачі тільки на себе і на 1, то число 2 - просте число. Таким чином, число 2 є єдиним парних простим числом.
3
Розділіть n на кожне число від 2 до n-1. Так як дільник менше діленого, то перевірка всіх дільників менших n і великих 2 повинна показати, чи є n простим числом. Ви починаєте з числа більшого 2, тому що парні числа (які кратні 2) не є простими числами. Це далеко не найефективніший спосіб тестування чисел на простоту, але тут існує кілька методів оптимізації перевірки.- Наприклад, перевіримо число 11. У цьому випадку розділимо (без остачі) 11 на 3, 4, 5, 6, 7, 8, 9, 10. Так як жодне з цих чисел не ділить (без остачі) 11, то число 11 - просте число.
4
Щоб заощадити час, перевірте подільники до округленого значення квадратного кореня (n). Перевірка всіх дільників від 2 до n-1 може зайняти багато часу. Наприклад, якщо ви хочете перевірити число 103, то вам доведеться протестувати наступні подільники: 3, 4, 5, 6, 7 ... і так далі аж до 102! Але цього можна уникнути - перевірте тільки подільники від 2 до округленого значення квадратного кореня (n).- Пояснення цього принципу. Розглянемо множники 100. 100 = 1? 100, 2? 50, 4? 25, 5? 20, 10? 10, 20? 5, 25? 4, 50? 2, 100? 1. Зверніть увагу, що після пари множників 10? 10 всі пари множників повторюються (тільки множники в цих парах переставлені місцями). Тому ви можете ігнорувати подільники числа n більші, ніж квадратний корінь (n).
- Наприклад, перевіримо n = 37. Не потрібно тестувати всі подільники від 3 до 36. Замість цього перевірте подільники між 2 і округленим значенням квадратного кореня (37).
- Квадратний корінь (37) = 6,08. Округліть це число до 7.
- 37 не ділиться на 3, 4, 5, 6, 7, тому воно - просте.
5
Для подальшої економії часу тестируйте тільки прості дільники. За визначенням будь складене число може бути виражене як добуток двох або більше простих чисел. Тому поділ числа n на складовою дільник - зайва операція, що повторює багаторазове розподіл числа n на прості дільники. Таким чином, ви можете ще більше звузити тестований ряд дільників.- Це означає, що всі парні подільники та все подільники, кратні простим числам, можуть бути опущені.
- Наприклад, перевіримо число 103. Квадратний корінь з 103 округлюється до 11. Прості подільники від 2 до 11 це 3, 5, 7, 11. Подільники 4, 6, 8, 9, 10 можна опустити (9 кратно 3, а всі інші подільники - парні числа). Таким чином, ви зменшили ряд тестованих дільників до чотирьох чисел.
- Подільники 3, 5, 7, 11 не ділять (без остачі) число 103, тому воно - просте.
Метод 2 з 4: Тест Ферма
У 1640 році французький математик П`єр Ферма вперше сформулював теорему (мала теорема Ферма), яка використовується при визначенні простоти числа. Фактично, тест Ферма служить для визначення складових чисел, а не простих. Цей тест з упевненістю визначає, чи є число складовим, або визначає, що число «швидше за все» просте. Тест Ферма корисний у випадках, коли перебір дільників непрактичний і коли доступний список чисел, що є винятками з теореми.
1
Нехай n - проверяемое число. Як зазначалося вище, іноді тест ложно ідентифікує складені числа як прості. Тому необхідно перевірити відповідь (спосіб перевірки відповіді описаний нижче).2
Виберіть будь-яке ціле число «а» від 2 до n-1 (включно).- Наприклад, перевіримо на простоту число 100. Припустимо, а = 3.
3
Обчисліть a (Mod n). Обчислення цього виразу зажадає деяких знань з модульної арифметики. В модульної арифметики при досягненні певного значення, званого модулем, відлік чисел починається з нуля. Уявіть це як годинник: годину після полудня - це 1:00, а не 13:00, тобто час після полудня відлічується з нуля. Модуль позначається як mod n. Таким чином, обчисліть a (mod n).- Одним із способів обчислення буде обчислити a, а потім розділити результат на n, а в якості відповіді записати залишок поділу. У цьому випадку рекомендується використовувати спеціалізовані калькулятори з функцією модуля, так як вони миттєво обчислюють залишок при діленні великих чисел.
- У нашому прикладі, при діленні 3/100 виходить залишок 1. Таким чином, 3 (mod 100) = 1.
4
Якщо у вас немає спеціалізованого калькулятора, при обчисленні залишку вручну використовуйте експонентну запис числа.- У нашому прикладі вручну обчисліть 3 (mod 100). 3 = 515377520732011331036461129765621272702107522001 - величезне число, з яким важко працювати. Замість того, щоб працювати з 48-значним числом, уявіть 3 як (((((((3) * 3)))) * 3)). Нагадаємо, що при зведенні ступеня в ступінь показники перемножуються: ((x) = x).
- Тепер визначте залишок. В (((((((3) * 3)))) * 3)) почніть рішення з внутрішніх дужок і кожен раз результат ділите на 100. При отриманні залишку використовуйте його в подальших розрахунках (а не в якості відповіді).
- (((((((9) * 3)))) * 3)) - 9/100 - залишку немає.
- ((((((27)))) * 3)) - 27/100 - залишку немає.
- (((((729))) * 3)) - 729/100 = 7 (ост.29). Залишок 29. Продовжіть обчислення з числом 29.
- ((((29 =841)) * 3)) - 841/100 = 8 (ост.41). Залишок 41. Продовжіть обчислення з числом 41.
- (((41 = 1681) * 3)) - 1681/100 = 16 (ост.81). Залишок 81. Продовжіть обчислення з числом 81.
- ((81 * 3 = 243)) - 243/100 = 2 (ост. 43). Залишок 43. Продовжіть обчислення з числом 43.
- (43 = 1849) - 1849/100 = 18 (ост.49). Залишок 49. Продовжіть обчислення з числом 49.
- 49 = 2401 - 2401/100 = 24 (ост.1). Кінцевий залишок 1. Таким чином, 3 (mod 100) = 1 (такий же результат був отриманий при обчисленні на калькуляторі).
- Тепер визначте залишок. В (((((((3) * 3)))) * 3)) почніть рішення з внутрішніх дужок і кожен раз результат ділите на 100. При отриманні залишку використовуйте його в подальших розрахунках (а не в якості відповіді).
- У нашому прикладі вручну обчисліть 3 (mod 100). 3 = 515377520732011331036461129765621272702107522001 - величезне число, з яким важко працювати. Замість того, щоб працювати з 48-значним числом, уявіть 3 як (((((((3) * 3)))) * 3)). Нагадаємо, що при зведенні ступеня в ступінь показники перемножуються: ((x) = x).
5
Перевірте рівність: a (Mod n) = a (Mod n). Якщо воно не дотримано, то n - складене число. Якщо воно дотримано, то n, швидше за все, просте число (але не обов`язково). Повторіть тест з різними значеннями «а», щоб упевнитися в правильності відповіді. Але є складені числа, що задовольняють умові Ферма при будь-яких значеннях «а». Вони називаються числами Кармайкла (найменше з них - число 561).- У нашому прикладі 3 (mod 100) = 1, а 100 (mod 100) = 0. Таким чином, 1? 0 і 100 - складене число.
6
Використовуйте числа Кармайкла в якості гарантії правильності відповіді. Числа Кармайкла мають вигляд (6k + 1) (12k + 1) (18k + 1) для цілих значень k, коли кожен дільник є простим. Ви можете знайти повний список чисел Кармайкла в інтернеті.
Метод 3 з 4: Тест Міллера-Рабіна
Тест Міллера-Рабіна ефективно визначає, чи є число складовим (і краще обробляє виключення, такі як числа Кармайкла).
1
Нехай n - непарне число, яке потрібно протестувати на простоту.2
Запишіть n-1 у вигляді 2? d, де d - непарне число. Якщо n - просте, то воно має бути непарною. Тому n-1 - парне. Так як n-1 - парне число, то воно може бути представлено у вигляді твору числа 2 в деякій мірі на непарне число. Наприклад, 4 = 2? 1, 80 = 2? 5 і так далі.- Наприклад, визначте простоту числа n = 321. 321 - 1 = 320, а 320 = 2? 5. Тобто s = 6 і d = 5.
- Наприклад, візьмемо більш складне число n = 371. 371 - 1 = 370, а 370 = 2? 185. Тобто d = 185, що значно ускладнить обчислення.
- Наприклад, визначте простоту числа n = 321. 321 - 1 = 320, а 320 = 2? 5. Тобто s = 6 і d = 5.
3
Візьміть будь-яке число «а» між 2 і n-1.- У нашому прикладі для n = 321 виберіть а = 100.
4
Обчисліть a (Mod n). Якщо a = 1 або -1 (mod n), То число n проходить тест Міллера-Рабіна і, швидше за все, є простим. Однак цей тест, як і тест Ферма, не може визначити простоту числа з абсолютною впевненістю.- У нашому прикладі для n = 321: a (mod n) = 100 (mod 321). 100 = 10,000,000,000 (mod 321) = 313. Для знаходження залишку 100/321 використовуйте спеціалізований калькулятор або розрахунок вручну (описаний вище).
- Так як результат не дорівнює 1 або -1, ви не можете стверджувати, що n - просте число.
- У нашому прикладі для n = 321: a (mod n) = 100 (mod 321). 100 = 10,000,000,000 (mod 321) = 313. Для знаходження залишку 100/321 використовуйте спеціалізований калькулятор або розрахунок вручну (описаний вище).
5
Якщо результат не дорівнює 1 або -1, обчисліть a, a, ... і так далі до ad. Якщо один з результатів дорівнює 1 або -1 (mod n), то число n проходить тест Міллера- Рабина і, швидше за все, є простим. Якщо n проходить тест, перевірте відповідь (дивіться наступний крок). Якщо n не проходить будь-який з цих тестів, то n - складене число.- Нагадаємо, що в нашому прикладі а = 100, s = 6, d = 5. Продовжіть перевірку таким чином:
- 100 = 1? 10.
- 1? 10 (mod 321) = 64. 64 ? 1 або -1. Продовжіть обчислення.
- 100 = 1? 10.
- 1? 10 (mod 321) = 244. 244 ? 1 або -1.
- Тут ви можете закінчити обчислення. s - 1 = 6 - 1 = 5. Ви досягли граничного значення 4d = 2. Оскільки жоден з розрахунків не дав 1 або -1, ви можете з упевненістю заявити, що n = 321 - складене число.
- 100 = 1? 10.
- Нагадаємо, що в нашому прикладі а = 100, s = 6, d = 5. Продовжіть перевірку таким чином:
6
Якщо n проходить тест Міллера- Рабіна, повторіть тест з різними значеннями «а», щоб упевнитися в правильності відповіді. Якщо n - просте число, воно пройде тест з будь-яким значенням «а». Якщо n - складене число, не менше трьох чвертей значень «а» не пройдуть тест. Тому тест Міллера- Рабина є більш надійним, ніж тест Ферма, в якому складені числа Кармайкла проходять тест при будь-якому значенні «а».
Метод 4 з 4: Китайська теорема про залишки
1
Виберіть два числа - одне складене, а другий для перевірки того, що воно просте.- Число1 = 35
- Число2 = 97
2
Виберіть два нерівних числа (значення), які більше нуля і менше Чісла1 і Чісла2.- Значення1 = 1
- Значення2 = 2
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
- Обчисліть MMI.
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
- Для MMI1
5
Обчисліть (значення1 * Число2 * MMI1 + значення2 * Число1 * MMI2)% (Число1 * Число2).- Відповідь = (1 * 97 * 27 + 2 * 35 * 61)% (97 * 35)
- Відповідь = (2619 + 4270)% 3395
- Відповідь = 99
6
Перевірте, що Число1 не є простим.- Обчисліть (Відповідь - значення1)% Число1
- 99 -1% 35 = 28
- Так як 28 більше 0, то 35 не є простим числом.
7
Перевірте, що Число2 є простим.- Обчисліть (Відповідь - значення2)% Число2
- 99 - 2% 97 = 0
- Так як 0 дорівнює 0, то 97 - швидше за все просте число.
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).
- Якщо в кроці 7 ви отримали 0:
Поради
- Прості числа від 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
- Хоча у випадку великих чисел перебір дільників є трудомістким способом перевірки, він досить ефективний у разі малих чисел. Навіть у випадку великих чисел починають з тестування малих дільників, а потім переходять до більш складних методів перевірки простоти чисел (якщо малі подільники не знайдені).
Що вам знадобиться
- Папір, ручка, комп`ютер.