Факториза́ція цілого числа — розкладання заданого цілого числа на прості множники.
На відміну від задачі розпізнавання простоти числа, факторизація ймовірно є складною задачею. Передбачувана складність задачі факторизації лежить в основі криптостійкості деяких алгоритмів шифрування з відкритим ключем, таких як RSA.
Алгоритми факторизації
Тривіальним алгоритмом факторизації чисел є повний перебір можливих дільників (до ). Складність цього алгоритму дорівнює операцій. Однак, він швидко знаходить невеликі дільники й застосовується для їх пошуку (зокрема, як початковий крок у деяких інших алгоритмах).
Метод Ферма у загальному випадку теж має складність операцій, але є досить ефективним, коли два множники близькі один до одного (приблизно рівні між собою).
Метод Лемана комбінує тривіальний алгоритм для пошуку малих дільників (до ) та ідеї, що закладені в методі Ферма. Цей алгоритм став першим, складність якого ( арифметичних операцій) була меншою, ніж . Нині він становить суто історичний інтерес.
Метод квадратичних форм Шенкса, який оперує числами, що не перевищують , має оцінку складності . На 32-бітних процесорах він є найшвидшим для чисел у діапазоні від 1010 до 1018 (тобто, довжиною від 33 до 60 біт). Його застосовують як допоміжний у багатьох реалізаціях потужніших методів — для факторизації проміжних чисел, які не мають малих дільників.
Імовірнісний ρ-алгоритм Полларда порівняно швидко знаходить невеликі дільники (якщо такі є) і теж має складність операцій.
Для дуже великих чисел час виконання операцій над ними пропорційний їх довжині. З урахуванням цього фактору всі перелічені вище методи (із поліноміальною оцінкою кількості операцій) мають експоненційну часову складність і для факторизації великих чисел практично непридатні.
Субекспоненційну оцінку обчислювальної складності мають методи Діксона, , квадратичного решета й [en].
Для факторизації чисел понад 10100 найефективнішим алгоритмом факторизації є метод решета числового поля з обчислювальною складністю .
Теоретичні проблеми
Питання про існування алгоритму факторизації з поліноміальною складністю на класичному комп'ютері є однією з важливих відкритих проблем сучасної теорії чисел. У той же час, для спорідненої задачі про розпізнавання простоти числа існує поліноміальне рішення — AKS тест простоти.
Розв'язок задачі факторизації з поліноміальною складністю можливий на квантовому комп'ютері за допомогою алгоритму Шора.
Передбачувана складність задачі факторизації лежить в основі криптостійкості деяких алгоритмів шифрування з відкритим ключем, таких як RSA.
Реалізація
Функції на мові Haskell
Нижче наведено реалізацію тривіального алгоритму (перебором простих дільників) на мові програмування Haskell.
primes :: [Integer] primes = eratosthenes [2..] where eratosthenes (x:xs) = x:eratosthenes (filter ((/= 0).(`mod` x)) xs) factorization :: Integer -> [Integer] factorization 1 = [] factorization n = x:factorization (n `div` x) where x = head [y | y <- (takeWhile (<= n) primes), n `mod` y == 0]
Див. також
Джерела
- Василенко, 2003, с. 57.
- Василенко, 2003, с. 106.
Посилання
- Carl Pomerance. Analysis and Comparison of Some Integer Factoring Algorithms. — Amsterdam : Math. Centre Tract 154, 1982. — С. 89-139.
- Василенко О. Н. Теоретико-числовые алгоритмы в криптографии. — Москва : МЦНМО, 2003. — С. 57—77. — 1000 прим. — .(рос.)
Це незавершена стаття з математики. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Faktoriza ciya cilogo chisla rozkladannya zadanogo cilogo chisla na prosti mnozhniki Na vidminu vid zadachi rozpiznavannya prostoti chisla faktorizaciya jmovirno ye skladnoyu zadacheyu Peredbachuvana skladnist zadachi faktorizaciyi lezhit v osnovi kriptostijkosti deyakih algoritmiv shifruvannya z vidkritim klyuchem takih yak RSA Algoritmi faktorizaciyiTrivialnim algoritmom faktorizaciyi chisel ye povnij perebir mozhlivih dilnikiv do n displaystyle sqrt n Skladnist cogo algoritmu dorivnyuye O N1 2 displaystyle O N 1 2 operacij Odnak vin shvidko znahodit neveliki dilniki j zastosovuyetsya dlya yih poshuku zokrema yak pochatkovij krok u deyakih inshih algoritmah Metod Ferma u zagalnomu vipadku tezh maye skladnist O n displaystyle O sqrt n operacij ale ye dosit efektivnim koli dva mnozhniki blizki odin do odnogo priblizno rivni mizh soboyu Metod Lemana kombinuye trivialnij algoritm dlya poshuku malih dilnikiv do n1 3 displaystyle n 1 3 ta ideyi sho zakladeni v metodi Ferma Cej algoritm stav pershim skladnist yakogo O n1 3 displaystyle O n 1 3 arifmetichnih operacij bula menshoyu nizh O n displaystyle O sqrt n Nini vin stanovit suto istorichnij interes Metod kvadratichnih form Shenksa yakij operuye chislami sho ne perevishuyut 2n displaystyle 2 sqrt n maye ocinku skladnosti O n1 4 displaystyle O n 1 4 Na 32 bitnih procesorah vin ye najshvidshim dlya chisel u diapazoni vid 1010 do 1018 tobto dovzhinoyu vid 33 do 60 bit Jogo zastosovuyut yak dopomizhnij u bagatoh realizaciyah potuzhnishih metodiv dlya faktorizaciyi promizhnih chisel yaki ne mayut malih dilnikiv Imovirnisnij r algoritm Pollarda porivnyano shvidko znahodit neveliki dilniki yaksho taki ye i tezh maye skladnist O n1 4 displaystyle O n 1 4 operacij Dlya duzhe velikih chisel chas vikonannya operacij nad nimi proporcijnij yih dovzhini Z urahuvannyam cogo faktoru vsi perelicheni vishe metodi iz polinomialnoyu ocinkoyu kilkosti operacij mayut eksponencijnuchasovu skladnist i dlya faktorizaciyi velikih chisel praktichno nepridatni Subeksponencijnu ocinku obchislyuvalnoyi skladnosti mayut metodi Diksona kvadratichnogo resheta j en O exp c ln N ln ln N 1 2 displaystyle O exp c ln N ln ln N 1 2 Dlya faktorizaciyi chisel ponad 10100 najefektivnishim algoritmom faktorizaciyi ye metod resheta chislovogo polya z obchislyuvalnoyu skladnistyu O exp cln N 1 3ln ln N 2 3 displaystyle O exp c ln N 1 3 ln ln N 2 3 Teoretichni problemiPitannya pro isnuvannya algoritmu faktorizaciyi z polinomialnoyu skladnistyu na klasichnomu komp yuteri ye odniyeyu z vazhlivih vidkritih problem suchasnoyi teoriyi chisel U toj zhe chas dlya sporidnenoyi zadachi pro rozpiznavannya prostoti chisla isnuye polinomialne rishennya AKS test prostoti Rozv yazok zadachi faktorizaciyi z polinomialnoyu skladnistyu mozhlivij na kvantovomu komp yuteri za dopomogoyu algoritmu Shora Peredbachuvana skladnist zadachi faktorizaciyi lezhit v osnovi kriptostijkosti deyakih algoritmiv shifruvannya z vidkritim klyuchem takih yak RSA RealizaciyaFunkciyi na movi Haskell Nizhche navedeno realizaciyu trivialnogo algoritmu pereborom prostih dilnikiv na movi programuvannya Haskell primes Integer primes eratosthenes 2 where eratosthenes x xs x eratosthenes filter 0 mod x xs factorization Integer gt Integer factorization 1 factorization n x factorization n div x where x head y y lt takeWhile lt n primes n mod y 0 Div takozhFaktorial Algoritm Poliga Gellmana Riven kriptostijkostiDzherelaVasilenko 2003 s 57 Vasilenko 2003 s 106 PosilannyaCarl Pomerance Analysis and Comparison of Some Integer Factoring Algorithms Amsterdam Math Centre Tract 154 1982 S 89 139 Vasilenko O N Teoretiko chislovye algoritmy v kriptografii Moskva MCNMO 2003 S 57 77 1000 prim ISBN 5 94057 103 4 ros Ce nezavershena stattya z matematiki Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi