Кіріспе

Біріншілік сандық тексеру
Миллер-Рабин біріншілік сандық тексеруі немесе Рабин-Миллер біріншілік сандық тексеруі – ықтималдық біріншілік сандық тексеру: берілген санның бірінші сан болу мүмкіндігін анықтайтын алгоритм, Ферма біріншілік сандық тексеруіне және Соловай-Страссен біріншілік сандық тексеруіне ұқсас. Бұл полиномиалдық уақыттағы детерминистік біріншілік сандық тексеруді іздеу тарихында маңызды орын алады. Оның ықтималдық түрі практикада кеңінен қолданылады, себебі ол белгілі ең қарапайым және жылдам тексерулердің бірі. Гари Л. Миллер бұл тексеруді 1976 жылы ашқан. Миллердің нұсқасы детерминистік, бірақ оның дұрыстығы дәлелденбеген кеңейтілген Риман гипотезасына байланысты. Майкл О. Рабин 1980 жылы шартты ықтималдық алгоритмді алу үшін оны өзгертті.

Математикалық ұғымдар

Ферма және Соловай-Страссен сынақтары сияқты, Миллер-Рабин біріншілік сынағы да, алғашқы сандар үшін орындалатыны белгілі қасиеттің, тексеріліп жатқан сан үшін де орындалатынын тексеріп қарастырады.

Негізгі құралдарды таңдау

Бақытымызға орай, ешқандай құрама сан бір уақытта барлық негіздерге қатысты мықты псевдоприм бола алмайды (Ферматтың біріншілік тестісіне қайшы, онда барлық негіздерге қатысты Фермат псевдопримдері бар: Кармайкл сандары). Дегенмен, куәгерді табудың қарапайым жолы белгілі емес. Наive шешім – барлық мүмкін негіздерді тексеру, бұл тиімсіз детерминистік алгоритмге әкеледі. Миллер тестісі – бұл тестінің тиімдірек түрі (төмендегі Миллер тестісі бөлімін қараңыз). Тағы бір шешім – негізді кездейсоқ түрде таңдау. Бұл жылдам ықтималдық тестісін береді. Егер n құрама сан болса, көптеген негіздер куәгер болады, сондықтан тест n-ді жоғары ықтималдықпен құрама сан ретінде анықтайды (төмендегі Дұрыс болу бөлімін қараңыз). Біз жалған оң нәтижелердің ықтималдығын кез келгенге жуық шағын мәнге дейін жылдам түрде төмендетуге болады, осы мәнге жету үшін қажетті тәуелсіз таңдалған негіздердің нәтижелерін біріктіру арқылы. Бұл Миллер-Рабин тестісі. Көптеген негіздерді сынап көрудің тиімділігі төмендейді, себебі егер n қандай да бір негізге псевдоприм болса, онда ол басқа негізге де псевдоприм болуы мүмкін. Ескеріңіз, a^(d) ≡ 1 (mod n) a ≡ 1 (mod n) үшін тривиальды түрде орындалады, өйткені конгруенция қатынасы дәрежелеумен үйлесімді. Сондай-ақ, 1=a^(d) = a^(2^(0)d) ≡ −1 (mod n) a ≡ −1 (mod n) үшін тривиальды түрде орындалады, себебі d тақ, дәл сол себеппен. Сондықтан кездейсоқ a әдетте 1 < a < n − 1 аралығында таңдалады. Кез келген үлкен n-ді тексеру үшін негіздерді кездейсоқ түрде таңдау маңызды, өйткені біз куәгерлер мен күшті жалғандардың 2, 3, ..., n − 2 сандары арасындағы таралуын білмейміз. Дегенмен, алдын ала таңдалған бірнеше кіші негіздер жиынтығы алдын ала есептелген максимумқа дейінгі барлық құрама сандарды анықтауға кепілдік береді. Бұл максимум әдетте негіздермен салыстырғанда өте үлкен. Бұл жеткілікті кішкентай n үшін өте жылдам детерминистік сынақтарды қамтамасыз етеді (төмендегі негіздердің кіші жиынтықтарына қарсы тестілеу бөлімін қараңыз).

Дәлелдендіру

Бұл n жай сан болса, 1-дің n модуль бойынша тек 1 және -1 ғана квадрат түбірі болады дегенді дәлелдейді. Бұл n тақ жай сан болса, ол a негізі бойынша берік ықтимал жай сан екенін дәлелдейді.

Күрделілігі

Қайталанған квадраттауды пайдаланып, бұл алгоритмнің жұмыс уақыты [[Big O белгісі, мұнда n – біріншілік сандығына тексерілген сан, ал k – жүргізілген раундтар саны; осылайша бұл тиімді, полиномиалдық уақыт алгоритмі. FFT негізіндегі көбейту (Харви-Ховен алгоритмі) жұмыс уақытын қысқартады.