неділя, 9 листопада 2014 р.

ТЕСТИ ПРОСТОТИ



Тест простоти – це алгоритм, який по заданому натуральному числу визначає, просте воно, чи ні. Найчастіше тести простоти використовують при перевірці чисел на простоту, реалізовуючи їх алгоритми за допомогою комп’ютерних програм. Тому складність алгоритму тесту простоти являється важливою характеристикою будь-якого надалі розглядуваного тесту.
Всі тести простоти можна умовно поділити на такі чотири основні групи: наївні, ймовірнісні, детерміновані та теорико-числові.
Наївні тести простоти – це тести простоти, засновані на повному переборі всіх можливих випадків для встановлення простоти заданого числа. Наївним тестам простоти притаманна висока точність перевірки чисел, але час, потрібний для обробки даних для заданого числа, значно зростає при збільшенні самого числа. Тим паче, що для обробки заданого числа повинна вже бути сформована база чисел, що стояли перед ним, генерація яких потребує також певного часу.
Найрозповсюдженішим, найпростішим з точки зору організації і найповільнішим з точки зору обробки наївним тестом простоти являється загальновідомий метод повного перебору дільників. Про його практичне застосування піде мова трохи далі.
Ймовірнісні тести простоти – це тести простоти, засновані на гнучкому й швидкому алгоритмові перевірки, що мають досить високу погрішність перевірки на предмет простоти. Ймовірнісним тестам характерна висока швидкість обробки даних при перевірці на предмет простоти заданого числа, проте за рахунок цього страждає точність перевірки. Ось загальні характеристики всіх ймовірнісних тестів простоти:
1.     Ймовірнісні тести завжди без помилок визначають просте число.
2.     Ймовірнісні тести не завжди без помилок визначають складене число.
Найпростішим і найрозповсюдженішим являється тест простоти Ферма, заснований на Малій теоремі Ферма. Проте він має занадто велику погрішність.
Детерміновані тести простоти – це тести простоти, алгоритм яких спрямований на безпомилкове визначення заданого числа на простоту, виконуючи мінімум обчислювальних операцій. Детерміновані тести простоти являються великим кроком вперед порівняно з наївними тестами, проте найчастіше являються повною протилежністю ймовірнісним: точність велика, проте складність обчислень також не мала. Все це негативно впливає на швидкість перевірки простоти числа комп’ютером. Саме тому детерміновані тести простоти так і не отримали належної популярності, хоча також трапляються випадки необхідності їх використання. Проте існують і порівняно швидкі детерміновані тести, такі як тест простоти Агравал-Кайал-Саксена. Деякі науковці відносять до детермінованих тестів простоти також і наївні тести, спираючись на їх безпомилкові результати. Особисто я притримуюсь такої ж думки.
Теорико-числові тести простоти – це тести простоти, спрямовані перевіряти числа спеціального вигляду на простоту. З визначення зрозуміло, що певні тести перевіряють на простоту лише окремі числа, що мають зазначений вигляд, наприклад числа Ферма, Мерсенна та ін., на відміну від класичних детермінованих, що перевіряють числа загального натурального вигляду. Але за безпомилковість роботи таких тестів, можна вважати їх відгалуженням детермінованих. Найрозповсюдженішими теорико-числовими тестами простоти являються тест Лукаса-Лемера та тест Профа.

Прості числа Мерсенна



  Прості числа Мерсенна мають вигляд 2p-1 і записуються як Mp, де p – просте число. Числа даного виду отримали таку назву в честь їхнього першовідкривача – Марена Мерсенна. Ось початок ряду простих чисел Мерсенна:
3
7
31
127
8191
131071
524287
2147483647
2305843009213693951
618970019642690137449562111
162259276829213363391578010288127
170141183460469231731687303715884105727
Це далеко не повний перелік простих чисел спеціального вигляду, але всі вони: і перелічені, і не перелічені – мають велику спільну проблему– далеко не завжди результатом такого запису числа є просте число. Правдоподібність отриманого результату на предмет віднесення до простих чисел перевіряють тести простоти, про які піде мова у насупному розділі.

Прості числа Ферма



Прості числа Ферма мають вигляд 22n+1, де n – ціле невід’ємне число, і записуються як Fn. Вперше такі числа почав застосовувати видатний математик П’єр Ферма, який висунув гіпотезу, що всі числа даного вигляду є простими. Це припущення спростував у 1732 році Леонард Ейлер, показавши, що F5=4294967297=641*6700417. Ось перші прості числа Ферма:
3
5
17
257
65537
4294967297
18446744073709551617

Прості близнюки



Прості близнюки це прості числа, модуль різниці яких дає 2. Наприклад:
(3, 5)
(5, 7)
(11, 13)
(17, 19)
(29, 31)
(41, 43)
(59, 61)
(71, 73)
(101, 103)
(107, 109)
(137, 139)
(149, 151)
(179, 181)
(191, 193)
(197, 199)
(227, 229)
(239, 241)
(269, 271)
(281, 283)
(311, 313)
(347, 349)
(419, 421)
(431, 433)
(461, 463)
(521, 523)
(569, 571)
(599, 601)
(617, 619)
(641, 643)
(659, 661)
(809, 811)
(821, 823)
(827, 829)
(857, 859)
(881, 883)