Алгоритм Лемана (або алгоритм Шермана Лемана) детерміновано розкладає задане натуральне число на множники за арифметичних операцій. Алгоритм запропонував американський математик Шерман Леман в 1974 році. Цей алгоритм став першим алгоритмом факторизації цілих чисел, складність якого менша, ніж . На сьогодні він має суто історичний інтерес і, як правило, не застосовується на практиці.
Опис
Спочатку алгоритм перевіряє чи має прості дільники, які не перевищують .
Далі метод Лемана розвиває ідеї, що закладені в алгоритмі Ферма, і шукає дільники числа , використовуючи рівність для деякого цілого числа . Він базується на наступній теоремі.
Формулювання теореми
Нехай — додатне непарне ціле число, а — ціле число таке, що . Якщо , де і прості, а також
- , то тоді існують такі невід'ємні цілі числа , , , що
- ,
- ,
- , якщо непарне,
і
- .
Якщо — просте, то таких чисел , , не знайдеться.
Теоретичне обґрунтування
Формулювання теореми
Нехай можна записати як добуток двох непарних взаємно простих чисел, що задовольняють нерівностям . Тоді знайдуться такі натуральні числа і , що
1. Виконується рівність при ,
2. Виконується нерівність .
Для доведення цієї теореми потрібна наступна лема.
Лема
Якщо , тобто , то твердження теореми виконується для . Далі будемо вважати .
Розкладемо в ланцюговий дріб. Позначимо -тий наближений дріб до . Тоді
, , ,
оскільки . Оберемо перший номер такий, що
, .
Такий номер обов'язково знайдеться, бо в останньому наближеному дробі знаменник . Доведемо, що і задовольняють твердженню леми. Очевидно, що . Далі,
за властивостями ланцюгового дробу.
Розглянемо спочатку випадок . В цьому випадку
,
що і потрібно було довести.
Тепер розглянемо випадок . Нерівності приймуть вигляд , і тоді . Відповідно, за властивостями ланцюгових дробів, виконуються нерівності
. І тоді
.
Лему доведено.
Доведення теореми
Припустимо, що і — непарні дільники числа і нехай і , де і задовольняють твердження леми, тоді виконується рівність
,
де . В силу леми, ціле число задовольняє нерівності . Отже, виконано перше твердження теореми.
Для доведення другого твердження покладемо , так як , то і . Використовуючи оцінку зверху для , отримуємо
.
З цього випливає, що . Теорему доведено.
Алгоритм
Нехай — непарне і .
Крок 1. Для простих перевірити умову . Якщо на цьому кроці не вдалося розкласти на множники, то переходимо до кроку 2.
Крок 2. Якщо на кроці 1 дільник не знайдено і — складене число, то , де - прості числа, і . Тоді для всіх і всіх перевірити чи є число квадратом натурального числа. Якщо це так, то для і виконується взяття по модулю:
- чи .
У цьому випадку для перевіряється нерівність і, якщо ця нерівність виконується, то — розклад на два множники. Якщо ж алгоритм не знайшов розкладу на два множники, то — просте число.
Цей алгоритм спочатку перевіряє чи має прості дільники, які не перевищують , а потім починає перебір значень і для перевірки виконання теореми. У випадку коли шукані значення і не знайдено, отримуємо, що число — просте. Таким чином можна розглядати цей алгоритм і як тест числа на простоту.
Псевдокод
for
to
do
if
then
return
end if
end for
for
to
do
for
to
do
if
then
if
then
return
else if
then
return
end if
end if
end for
end for
Пояснення:
Функція повертає , якщо є повним квадратом і — в іншому випадку.
Функція повертає найбільший спільний дільник чисел і .
Приклад
Розглянемо приклад , .
Для перевіряємо, чи є число дільником числа . Не важко переконатись, що таких немає. Переходимо до наступного кроку.
Для всіх і всіх перевіряємо, чи є число квадратом натурального числа. У нашому випадку для і вираз дорівнює 256, яке є квадратом: . Відповідно, і . Тоді , задовольняє нерівності і є дільником числа .
У результаті, ми розклали число на два множники: і .
Складність
Кількість операцій
На першому кроці треба зробити операцій для пошуку малих дільників числа .
Складність другого кроку оцінюється в операціях перевірки чи є число повним квадратом. Кількість операцій оцінюється зверху величиною .
Таким чином складність усього алгоритму — операцій.
Залежність від розрядності
Для великих чисел існує залежність часу виконання операцій від їх розрядності. Наприклад, складання двох чисел потребує часу, що лінійно залежить від довжини (більшого з них), а час множення й ділення ще більший, тобто, залежить від довжини чисел нелінійно (поліноміально). Отже, метод потребує поліноміальної кількості операцій (), але час кожної операції щонайменше лінійно залежить від довжини (розрядності) числа. Таким чином виникає експоненційна залежність часу виконання алгоритму від розрядності числа, що факторизується — .
, де — розрядність.
Порівняння з іншими методами
Як покращення методу Ферма, метод Лемана також істотно залежить від відстані між множниками числа: час його виконання лінійно залежить від дистанції[]. Однак, якщо різниця між множниками мала, то метод Лемана значно програє методу Ферма[].
Для чисел із невеликим простим дільником ситуація інша — метод Лемана завдяки послідовному діленню на першому кроці досить швидко виділить простий множник.
Можливість паралельних обчислень
Загальна ідея
Паралельна реалізація базується на наступному підході:
Крок 1:
Крок 2:
Застосування цього підходу дозволяє отримати лінійне прискорення при збільшенні кількості процесів на комп'ютері з розділеною пам'яттю.
Реалізація із застосуванням технології GPGPU
Для успішної реалізації алгоритму із застосуванням технології GPGPU треба вирішити два питання:
- Для кожної операції алгоритму вирішити, де варто її виконувати: на ЦП чи на графічному процесорі.
- Визначити кількість ядер графічного процесора, що застосовуються.
Описаний вище підхід можна застосовувати для розбиття задачі.
Крок 2: Усі операції цього кроку слід виконувати на графічному процесорі.
Нехай - кількість доступних ядер графічного процесора, - кількість елементів множини . Розглянемо два випадки:
- : Використаємо ядер графічного процесора.
- : Виконаємо ітерацій. На кожній ітерації виконуємо операцій ділення на ядрах. У кінці кожної ітерації визначаємо завершити процес чи ні.
Крок 2: Розподілити між ядрами графічного процесора так же, як і в кроці 1. На кожному ядрі виконати 1-3:
- Перевірити чи є число квадратом натурального числа.
- У випадку отримання позитивного результату на попередньому пункті, обчислити і .
- Для значень і перевірити умову .
- Для значень і , що пройшли останню перевірку, перевірити виконання умови .
Останній пункт краще виконувати на ЦП, оскільки ймовірність виконання цих операцій досить мала, а така перевірка на графічному процесорі відбувається досить повільно.
Примітки
- Lehman, R. Sherman. Factoring Large Integers. — Mathematics of Computation, 1974. — Т. 28, № 126. — С. 637-646. — DOI: .
- Нестеренко, 2011, с. 140.
- Василенко, 2003, с. 65—66.
- Нестеренко, 2011, с. 142.
- Василенко, 2003, с. 65.
- Нестеренко, 2011, с. 143.
- Макаренко А.В.,Пыхтеев А. В., Ефимов С. С. ИССЛЕДОВАНИЕ ПАРАЛЛЕЛЬНЫХ АЛГОРИТМОВ ФАКТОРИЗАЦИИ ЦЕЛЫХ ЧИСЕЛ В ВЫЧИСЛИТЕЛЬНЫХ КЛАСТЕРНЫХ СИСТЕМАХ // Омский государственный университет им. Ф.М. Достоевского (Омск). — 2012. — Т. 4, № 66. — С. 149—158.
- Желтов С. А. АДАПТАЦИЯ МЕТОДА ШЕРМАНА–ЛЕМАНА РЕШЕНИЯ ЗАДАЧИ ФАКТОРИЗАЦИИ К ВЫЧИСЛИТЕЛЬНОЙ АРХИТЕКТУРЕ CUDA // Российский государственный гуманитарный университет (Москва). — 2012. — Т. 14, № 94. — С. 84-91.
Література
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Algoritm Lemana abo algoritm Shermana Lemana determinovano rozkladaye zadane naturalne chislo n displaystyle n na mnozhniki za O n 1 3 displaystyle O n 1 3 arifmetichnih operacij Algoritm zaproponuvav amerikanskij matematik Sherman Leman v 1974 roci Cej algoritm stav pershim algoritmom faktorizaciyi cilih chisel skladnist yakogo mensha nizh O n displaystyle O sqrt n Na sogodni vin maye suto istorichnij interes i yak pravilo ne zastosovuyetsya na praktici OpisSpochatku algoritm pereviryaye chi maye n displaystyle n prosti dilniki yaki ne perevishuyut n 1 3 displaystyle lfloor n 1 3 rfloor Dali metod Lemana rozvivaye ideyi sho zakladeni v algoritmi Ferma i shukaye dilniki chisla n displaystyle n vikoristovuyuchi rivnist x 2 y 2 4 b n displaystyle x 2 y 2 4bn dlya deyakogo cilogo chisla b displaystyle b Vin bazuyetsya na nastupnij teoremi Formulyuvannya teoremi Nehaj n displaystyle n dodatne neparne cile chislo a r displaystyle r cile chislo take sho 1 r lt n 1 2 displaystyle 1 leqslant r lt n 1 2 Yaksho n p q displaystyle n pq de p displaystyle p i q displaystyle q prosti a takozh n r 1 1 2 lt p n 1 2 displaystyle left frac n r 1 right 1 2 lt p leqslant n 1 2 to todi isnuyut taki nevid yemni cili chisla x displaystyle x y displaystyle y k displaystyle k sho x 2 y 2 4 k n 1 k r displaystyle x 2 y 2 4kn 1 leqslant k leqslant r x k 1 mod 2 displaystyle x equiv k 1 pmod 2 x k 1 mod 4 displaystyle x equiv k 1 pmod 4 yaksho k displaystyle k neparne 0 x 4 k n 1 2 1 4 r 1 n k 1 2 displaystyle 0 leqslant x 4kn 1 2 leqslant frac 1 4 r 1 left frac n k right 1 2 i p min gcd x y n gcd x y n displaystyle p min gcd x y n gcd x y n Yaksho n displaystyle n proste to takih chisel x displaystyle x y displaystyle y k displaystyle k ne znajdetsya Teoretichne obgruntuvannyaFormulyuvannya teoremi Nehaj n p q displaystyle n pq mozhna zapisati yak dobutok dvoh neparnih vzayemno prostih chisel sho zadovolnyayut nerivnostyam n 1 3 lt p lt q lt n 2 3 displaystyle n 1 3 lt p lt q lt n 2 3 Todi znajdutsya taki naturalni chisla x y displaystyle x y i k 1 displaystyle k geqslant 1 sho 1 Vikonuyetsya rivnist x 2 y 2 4 k n displaystyle x 2 y 2 4kn pri k lt n 1 3 displaystyle k lt n 1 3 2 Vikonuyetsya nerivnist 0 x 4 k n lt n 1 6 4 k 1 displaystyle 0 leqslant x lfloor sqrt 4kn rfloor lt frac n 1 6 4 sqrt k 1 Dlya dovedennya ciyeyi teoremi potribna nastupna lema Lema Nehaj vikonano umovi teoremi Todi mozhna znajti taki naturalni chisla r s displaystyle r s sho r s lt n 1 3 displaystyle rs lt n 1 3 i p r q s lt n 1 3 displaystyle mid pr qs mid lt n 1 3 Dovedennya lemi Yaksho p q displaystyle p q tobto n p 2 displaystyle n p 2 to tverdzhennya teoremi vikonuyetsya dlya r s 1 displaystyle r s 1 Dali budemo vvazhati p lt q displaystyle p lt q Rozklademo q p displaystyle frac q p v lancyugovij drib Poznachimo p j q j displaystyle frac p j q j j displaystyle j tij nablizhenij drib do q p displaystyle frac q p Todi p 0 q p displaystyle p 0 left frac q p right q 0 1 displaystyle q 0 1 0 lt p 0 q 0 lt n 1 3 displaystyle 0 lt p 0 q 0 lt n 1 3 oskilki q p lt n 2 3 n 1 3 n 1 3 displaystyle frac q p lt frac n 2 3 n 1 3 n 1 3 Oberemo pershij nomer m displaystyle m takij sho p m q m lt n 1 3 displaystyle p m q m lt n 1 3 p m 1 q m 1 gt n 1 3 displaystyle p m 1 q m 1 gt n 1 3 Takij nomer obov yazkovo znajdetsya bo v ostannomu nablizhenomu drobi znamennik q N p gt n 1 3 displaystyle q N p gt n 1 3 Dovedemo sho r p m displaystyle r p m i s q m displaystyle s q m zadovolnyayut tverdzhennyu lemi Ochevidno sho r s lt n 1 3 displaystyle rs lt n 1 3 Dali r s q p r s p m 1 q m 1 1 s q m 1 displaystyle left frac r s frac q p right leqslant left frac r s frac p m 1 q m 1 right frac 1 sq m 1 za vlastivostyami lancyugovogo drobu Rozglyanemo spochatku vipadok p m 1 q m 1 q p displaystyle frac p m 1 q m 1 leqslant frac q p V comu vipadku p r q s p s r s q p p s s q m 1 p q m 1 p q m 1 p q m 1 p q m 1 q p m 1 n p m 1 q m 1 lt n 1 2 n 1 6 n 1 3 displaystyle pr qs ps left frac r s frac q p right leqslant frac ps sq m 1 frac p q m 1 sqrt frac p q m 1 frac p q m 1 leqslant sqrt frac p q m 1 sqrt frac q p m 1 sqrt frac n p m 1 q m 1 lt frac n 1 2 n 1 6 n 1 3 sho i potribno bulo dovesti Teper rozglyanemo vipadok p m 1 q m 1 gt q p displaystyle frac p m 1 q m 1 gt frac q p Nerivnosti prijmut viglyad p m 1 q m 1 gt q p gt p m q m displaystyle frac p m 1 q m 1 gt frac q p gt frac p m q m i todi q m p m gt p q gt q m 1 p m 1 displaystyle frac q m p m gt frac p q gt frac q m 1 p m 1 Vidpovidno za vlastivostyami lancyugovih drobiv vikonuyutsya nerivnosti 1 r q s r p q s r q m 1 p m 1 1 r p m 1 displaystyle frac 1 rq leqslant left frac s r frac p q right leqslant left frac s r frac q m 1 p m 1 right frac 1 rp m 1 I todi 1 s q p r r q s r p q r q r p m 1 q p m 1 q p m 1 q p m 1 q p m 1 p q m 1 n p m 1 q m 1 lt n 1 2 n 1 6 n 1 3 displaystyle 1 leqslant sq pr rq left frac s r frac p q right leqslant frac rq rp m 1 frac q p m 1 sqrt frac q p m 1 frac q p m 1 leqslant sqrt frac q p m 1 sqrt frac p q m 1 sqrt frac n p m 1 q m 1 lt frac n 1 2 n 1 6 n 1 3 Lemu dovedeno Dovedennya teoremi Pripustimo sho p displaystyle p i q displaystyle q neparni dilniki chisla n displaystyle n i nehaj x p r q s displaystyle x pr qs i y p r q s displaystyle y pr qs de r displaystyle r i s displaystyle s zadovolnyayut tverdzhennya lemi todi vikonuyetsya rivnist x 2 y 2 p r q s 2 p r q s 2 4 r s p q 4 k n displaystyle x 2 y 2 pr qs 2 pr qs 2 4rspq 4kn de k r s displaystyle k rs V silu lemi cile chislo k displaystyle k zadovolnyaye nerivnosti k lt n 1 3 displaystyle k lt n 1 3 Otzhe vikonano pershe tverdzhennya teoremi Dlya dovedennya drugogo tverdzhennya poklademo z x 4 b n p r q s 4 b n displaystyle z x lfloor sqrt 4bn rfloor pr qs lfloor sqrt 4bn rfloor tak yak x 2 4 k n y 2 displaystyle x 2 4kn y 2 to x 4 k n displaystyle x geqslant sqrt 4kn i z 0 displaystyle z geqslant 0 Vikoristovuyuchi ocinku zverhu dlya y displaystyle y otrimuyemo n 2 3 gt y 2 x 2 4 k n p r q s 4 k n p r q s 4 k n 2 4 k n p r q s 4 k n 2 4 k n z 1 displaystyle n 2 3 gt y 2 x 2 4kn pr qs sqrt 4kn pr qs sqrt 4kn geqslant 2 sqrt 4kn pr qs sqrt 4kn geqslant 2 sqrt 4kn z 1 Z cogo viplivaye sho z lt n 2 3 2 4 k n 1 n 1 6 4 k 1 displaystyle z lt frac n 2 3 2 sqrt 4kn 1 frac n 1 6 4 sqrt k 1 Teoremu dovedeno AlgoritmNehaj n displaystyle n neparne i n gt 8 displaystyle n gt 8 Krok 1 Dlya prostih a 2 3 n 1 3 displaystyle a 2 3 ldots lfloor n 1 3 rfloor pereviriti umovu a n displaystyle a mid n Yaksho na comu kroci ne vdalosya rozklasti n displaystyle n na mnozhniki to perehodimo do kroku 2 Krok 2 Yaksho na kroci 1 dilnik ne znajdeno i n displaystyle n skladene chislo to n p q displaystyle n pq de p q displaystyle p q prosti chisla i n 1 3 lt p q lt n 2 3 displaystyle n 1 3 lt p leqslant q lt n 2 3 Todi dlya vsih k 1 2 n 1 3 displaystyle k 1 2 ldots lfloor n 1 3 rfloor i vsih d 0 n 1 6 4 k 1 displaystyle d 0 ldots left lfloor frac n 1 6 4 sqrt k right rfloor 1 pereviriti chi ye chislo 4 k n d 2 4 k n displaystyle left left lfloor sqrt 4kn right rfloor d right 2 4kn kvadratom naturalnogo chisla Yaksho ce tak to dlya A 4 k n d displaystyle A left lfloor sqrt 4kn right rfloor d i B A 2 4 k n displaystyle B sqrt A 2 4kn vikonuyetsya vzyattya po modulyu A 2 B 2 mod n displaystyle A 2 equiv B 2 pmod n chi A B A B 0 mod n displaystyle A B A B equiv 0 pmod n U comu vipadku dlya d gcd A B n displaystyle d gcd A B n pereviryayetsya nerivnist 1 lt d lt n displaystyle 1 lt d lt n i yaksho cya nerivnist vikonuyetsya to n d n d displaystyle n d cdot n d rozklad n displaystyle n na dva mnozhniki Yaksho zh algoritm ne znajshov rozkladu n displaystyle n na dva mnozhniki to n displaystyle n proste chislo Cej algoritm spochatku pereviryaye chi maye n displaystyle n prosti dilniki yaki ne perevishuyut n 1 3 displaystyle lfloor n 1 3 rfloor a potim pochinaye perebir znachen k displaystyle k i d displaystyle d dlya perevirki vikonannya teoremi U vipadku koli shukani znachennya x displaystyle x i y displaystyle y ne znajdeno otrimuyemo sho chislo n displaystyle n proste Takim chinom mozhna rozglyadati cej algoritm i yak test chisla n displaystyle n na prostotu Psevdokod for a 2 displaystyle a gets 2 to n 1 3 displaystyle lfloor n 1 3 rfloor do if a mod n 0 displaystyle a mod n 0 thenreturn a displaystyle a dd end if end for for k 1 displaystyle k gets 1 to n 1 3 displaystyle lfloor n 1 3 rfloor do for d 0 displaystyle d gets 0 to n 1 6 4 k 1 displaystyle left lfloor frac n 1 6 4 sqrt k right rfloor 1 doif i s S q u a r e 4 k n d 2 4 k n displaystyle isSquare lfloor sqrt 4kn rfloor d 2 4kn thenA 4 k n d displaystyle A gets lfloor sqrt 4kn rfloor d B A 2 4 k n displaystyle B gets sqrt A 2 4kn if 1 lt g c d A B n lt n displaystyle 1 lt gcd A B n lt n thenreturn g c d A B n displaystyle gcd A B n dd else if 1 lt g c d A B n lt n displaystyle 1 lt gcd A B n lt n thenreturn g c d A B n displaystyle gcd A B n dd end if dd end if dd end for end for Poyasnennya Funkciya i s S q u a r e a displaystyle isSquare a povertaye t r u e displaystyle true yaksho a displaystyle a ye povnim kvadratom i f a l s e displaystyle false v inshomu vipadku Funkciya g c d a b displaystyle gcd a b povertaye najbilshij spilnij dilnik chisel a displaystyle a i b displaystyle b PrikladRozglyanemo priklad n 1387 displaystyle n 1387 n 1 3 11 displaystyle lfloor n 1 3 rfloor 11 Dlya a 2 3 5 7 11 displaystyle a 2 3 5 7 11 pereviryayemo chi ye chislo a displaystyle a dilnikom chisla n displaystyle n Ne vazhko perekonatis sho takih nemaye Perehodimo do nastupnogo kroku Dlya vsih k 1 2 3 11 displaystyle k 1 2 3 ldots 11 i vsih d 0 1 4 displaystyle d 0 1 ldots 4 pereviryayemo chi ye chislo 4 k n d 2 4 k n displaystyle left left lfloor sqrt 4kn right rfloor d right 2 4kn kvadratom naturalnogo chisla U nashomu vipadku dlya k 3 displaystyle k 3 i d 1 displaystyle d 1 viraz 4 k n d 2 4 k n displaystyle left left lfloor sqrt 4kn right rfloor d right 2 4kn dorivnyuye 256 yake ye kvadratom 256 16 2 displaystyle 256 16 2 Vidpovidno A 4 3 1387 1 130 displaystyle A lfloor sqrt 4 times 3 times 1387 rfloor 1 130 i B 16 displaystyle B 16 Todi d A B n 19 displaystyle d A B n 19 zadovolnyaye nerivnosti 1 lt d lt n displaystyle 1 lt d lt n i ye dilnikom chisla n displaystyle n U rezultati mi rozklali chislo 1387 displaystyle 1387 na dva mnozhniki 73 displaystyle 73 i 19 displaystyle 19 SkladnistKilkist operacij Na pershomu kroci treba zrobiti n 1 3 displaystyle lceil n 1 3 rceil operacij dlya poshuku malih dilnikiv chisla n displaystyle n Skladnist drugogo kroku ocinyuyetsya v operaciyah perevirki chi ye chislo 4 k n d 2 4 k n displaystyle left left lfloor sqrt 4kn right rfloor d right 2 4kn povnim kvadratom Kilkist operacij ocinyuyetsya zverhu velichinoyu n 1 6 4 k 1 n 1 6 1 k 2 n 1 3 n 1 6 lt 3 n 1 3 displaystyle frac n 1 6 4 sum k 1 lfloor n 1 6 rfloor frac 1 sqrt k 2 lceil n 1 3 rceil lfloor n 1 6 rfloor lt 3 lceil n 1 3 rceil Takim chinom skladnist usogo algoritmu O n 1 3 displaystyle O n 1 3 operacij Zalezhnist vid rozryadnosti Dlya velikih chisel isnuye zalezhnist chasu vikonannya operacij vid yih rozryadnosti Napriklad skladannya dvoh chisel potrebuye chasu sho linijno zalezhit vid dovzhini bilshogo z nih a chas mnozhennya j dilennya she bilshij tobto zalezhit vid dovzhini chisel nelinijno polinomialno Otzhe metod potrebuye polinomialnoyi kilkosti operacij O n 1 3 displaystyle O n 1 3 ale chas kozhnoyi operaciyi shonajmenshe linijno zalezhit vid dovzhini rozryadnosti chisla Takim chinom vinikaye eksponencijna zalezhnist chasu vikonannya algoritmu vid rozryadnosti chisla sho faktorizuyetsya O n n 1 3 displaystyle O n n 1 3 n 2 l displaystyle n simeq 2 l de l displaystyle l rozryadnist O n 1 3 O 2 l 3 O e l 3 displaystyle O n 1 3 O 2 l 3 O e l 3 Porivnyannya z inshimi metodamiYak pokrashennya metodu Ferma metod Lemana takozh istotno zalezhit vid vidstani mizh mnozhnikami chisla chas jogo vikonannya linijno zalezhit vid distanciyi dzherelo Odnak yaksho riznicya mizh mnozhnikami mala to metod Lemana znachno prograye metodu Ferma dzherelo Dlya chisel iz nevelikim prostim dilnikom situaciya insha metod Lemana zavdyaki poslidovnomu dilennyu na pershomu kroci dosit shvidko vidilit prostij mnozhnik Mozhlivist paralelnih obchislenZagalna ideya Paralelna realizaciya bazuyetsya na nastupnomu pidhodi Krok 1 Kozhnomu obchislyuvalnomu procesu sho bere uchast u faktorizaciyi vidayetsya svij nabir potencijnih dilnikiv z mnozhini 2 3 4 n 1 3 displaystyle 2 3 4 ldots lfloor n 1 3 rfloor Obchislyuvalnij proces pochergovo pereviryaye n displaystyle n na kratnist chislam zi svogo naboru dilnikiv Cherez deyaki promizhki chasu golovnij proces koordinator opituye obchislyuvalni procesi na predmet viyavlennya dilnika U vipadku koli dostatno pereviriti n displaystyle n na prostotu proces koordinator otrimavshi informaciyu pro znajdennya dilnika nadsilaye inshim procesam signal pro zavershennya roboti Yaksho zh dilnik ne znajdeno chi potribno znajti vsi dilniki poshuk prodovzhuyetsya Krok 2 Kozhnomu obchislyuvalnomu procesu analogichno z krokom 1 vidayetsya svij nabir chisel k displaystyle k z mnozhini 2 3 4 n 1 3 displaystyle 2 3 4 ldots lfloor n 1 3 rfloor Obchislyuvalnij proces po cherzi pereviryaye vsi umovi opisani v algoritmi viznachayuchi chi znajdenij netrivialnij mnozhnik Analogichno z krokom 1 proces koordinator periodichno opituye procesi shodo znajdennya dilnika i prijmaye rishennya pro pripinennya chi prodovzhennya obchislen Zastosuvannya cogo pidhodu dozvolyaye otrimati linijne priskorennya pri zbilshenni kilkosti procesiv na komp yuteri z rozdilenoyu pam yattyu Realizaciya iz zastosuvannyam tehnologiyi GPGPU Dlya uspishnoyi realizaciyi algoritmu iz zastosuvannyam tehnologiyi GPGPU treba virishiti dva pitannya Dlya kozhnoyi operaciyi algoritmu virishiti de varto yiyi vikonuvati na CP chi na grafichnomu procesori Viznachiti kilkist yader grafichnogo procesora sho zastosovuyutsya Opisanij vishe pidhid mozhna zastosovuvati dlya rozbittya zadachi Krok 2 Usi operaciyi cogo kroku slid vikonuvati na grafichnomu procesori Nehaj k e r displaystyle ker kilkist dostupnih yader grafichnogo procesora l a displaystyle la kilkist elementiv mnozhini 2 3 4 n 1 3 displaystyle 2 3 4 ldots lfloor n 1 3 rfloor Rozglyanemo dva vipadki l a k e r displaystyle la leqslant ker Vikoristayemo l a displaystyle la yader grafichnogo procesora l a gt k e r displaystyle la gt ker Vikonayemo l a k e r displaystyle left lceil frac la ker right rceil iteracij Na kozhnij iteraciyi vikonuyemo k e r displaystyle ker operacij dilennya na k e r displaystyle ker yadrah U kinci kozhnoyi iteraciyi viznachayemo zavershiti proces chi ni Krok 2 Rozpodiliti k displaystyle k mizh yadrami grafichnogo procesora tak zhe yak i v kroci 1 Na kozhnomu yadri vikonati 1 3 Pereviriti chi ye chislo 4 k n d 2 4 k n displaystyle left left lfloor sqrt 4kn right rfloor d right 2 4kn kvadratom naturalnogo chisla U vipadku otrimannya pozitivnogo rezultatu na poperednomu punkti obchisliti A 4 k n d displaystyle A left lfloor sqrt 4kn right rfloor d i B A 2 4 k n displaystyle B sqrt A 2 4kn Dlya znachen A displaystyle A i B displaystyle B pereviriti umovu A 2 B 2 mod n displaystyle A 2 equiv B 2 pmod n Dlya znachen A displaystyle A i B displaystyle B sho projshli ostannyu perevirku pereviriti vikonannya umovi 0 lt gcd A B n lt n displaystyle 0 lt gcd A pm B n lt n Ostannij punkt krashe vikonuvati na CP oskilki jmovirnist vikonannya cih operacij dosit mala a taka perevirka na grafichnomu procesori vidbuvayetsya dosit povilno PrimitkiLehman R Sherman Factoring Large Integers Mathematics of Computation 1974 T 28 126 S 637 646 DOI 10 2307 2005940 Nesterenko 2011 s 140 Vasilenko 2003 s 65 66 Nesterenko 2011 s 142 Vasilenko 2003 s 65 Nesterenko 2011 s 143 Makarenko A V Pyhteev A V Efimov S S ISSLEDOVANIE PARALLELNYH ALGORITMOV FAKTORIZACII CELYH ChISEL V VYChISLITELNYH KLASTERNYH SISTEMAH Omskij gosudarstvennyj universitet im F M Dostoevskogo Omsk 2012 T 4 66 S 149 158 Zheltov S A ADAPTACIYa METODA ShERMANA LEMANA REShENIYa ZADAChI FAKTORIZACII K VYChISLITELNOJ ARHITEKTURE CUDA Rossijskij gosudarstvennyj gumanitarnyj universitet Moskva 2012 T 14 94 S 84 91 LiteraturaVasilenko O N Teoretiko chislovye algoritmy v kriptografii M MCNMO 2003 328 s ISBN 5 94057 103 4 Aleksej Nesterenko Vvedenie v sovremennuyu kriptografiyu MCNMO 2011 190 s Richard Crandall Carl Pomerance A Computational Perspectives 2nd Springer 2011 597 s ISBN 0 387 25282 7