Řetězové zlomky. již čtenář obeznámen. Důraz bude kladen na implementační stránku, protože ta je ve



Podobné dokumenty
Svobodná chebská škola, základní škola a gymnázium s.r.o. Dělitelnost Rozklad na součin prvočísel. Dušan Astaloš

Univerzita Karlova v Praze Pedagogická fakulta

Věta o dělení polynomů se zbytkem

Zavedení a vlastnosti reálných čísel

Diskrétní matematika 1. týden

Soustavy linea rnı ch rovnic

Pomocný text. Polynomy

Moravské gymnázium Brno s.r.o.

Historie matematiky a informatiky Cvičení 2

1 Mnohočleny a algebraické rovnice

Kritéria dělitelnosti Divisibility Criterions

Cyklické kódy. Definujeme-li na F [x] n sčítání a násobení jako. a + b = π n (a + b) a b = π n (a b)

(Cramerovo pravidlo, determinanty, inverzní matice)

Prvočísla a čísla složená

4EK213 LINEÁRNÍ MODELY

Jak funguje asymetrické šifrování?

Kód trezoru 1 je liché číslo.

Polynomy. Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1.1 Teorie Zavedení polynomů Operace s polynomy...

Soustavy. Terminologie. Dva pohledy na soustavu lin. rovnic. Definice: Necht A = (a i,j ) R m,n je matice, b R m,1 je jednosloupcová.

1 Mnohočleny a algebraické rovnice

Limita funkce. FIT ČVUT v Praze. (FIT) Limita funkce 3.týden 1 / 39

BCH kódy. Alena Gollová, TIK BCH kódy 1/27

Základy elementární teorie čísel

[1] Definice 1: Polynom je komplexní funkce p : C C, pro kterou. pro všechna x C. Čísla a 0, a 1,..., a n nazýváme koeficienty polynomu.

Projekt OPVK - CZ.1.07/1.1.00/ Matematika pro všechny. Univerzita Palackého v Olomouci

Polynomy nad Z p Konstrukce faktorových okruhů modulo polynom. Alena Gollová, TIK Počítání modulo polynom 1/30

Historie matematiky a informatiky Cvičení 1

Příklad. Řešte v : takže rovnice v zadání má v tomto případě jedno řešení. Pro má rovnice tvar

Základy elementární teorie čísel

Historie matematiky a informatiky 2 7. přednáška

1 Řešení soustav lineárních rovnic

1 Linearní prostory nad komplexními čísly

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

VZOROVÝ TEST PRO 1. ROČNÍK (1. A, 3. C)

Úvod do informatiky. Miroslav Kolařík

INTEGRÁLY S PARAMETREM

Úlohy k procvičování textu o univerzální algebře

Svobodná chebská škola, základní škola a gymnázium s.r.o. Dušan Astaloš. samostatná práce, případně skupinová práce. pochopení znaků vztahů mezi čísly

Operace s maticemi. 19. února 2018

64. ročník matematické olympiády Řešení úloh krajského kola kategorie A

Generující kořeny cyklických kódů. Generující kořeny. Alena Gollová, TIK Generující kořeny 1/30

MPI - 7. přednáška. Hledání inverzí v Z n. Rychlé mocnění modulo n. Lineární rovnice v Z + n. Soustavy lineárních rovnic v Z + n.

4 Počítání modulo polynom

11. Skalární součin a ortogonalita p. 1/16

f(c) = 0. cn pro f(c n ) > 0 b n pro f(c n ) < 0

z nich byla poprvé dokázána v 19. století velikány analytické teorie čísel (Pafnutij Lvovič Čebyšev, Charles-Jean de la Vallée Poussin a další).

Definice (Racionální mocnina). Buď,. Nechť, kde a a čísla jsou nesoudělná. Pak: 1. je-li a sudé, (nebo) 2. je-li liché, klademe

HL Academy - Chata Lopata Emu (Brkos 2012) Řetězové zlomky / 27

{ 4} Krácení a rozšiřování zlomků. Předpoklady: Zlomky 1 2 ; 2 4 ; 3 6 ; 4 8 ; 5. představují stejné číslo.

1 Polynomiální interpolace

pro každé i. Proto je takových čísel m právě N ai 1 +. k k p

a počtem sloupců druhé matice. Spočítejme součin A.B. Označme matici A.B = M, pro její prvky platí:

Svobodná chebská škola, základní škola a gymnázium s.r.o. Dušan Astaloš. samostatná práce, případně skupinová práce. čísla soudělná a nesoudělná

13. cvičení z PSI ledna 2017

A0M15EZS Elektrické zdroje a soustavy ZS 2011/2012 cvičení 1. Jednotková matice na hlavní diagonále jsou jedničky, všude jinde nuly

Zpracoval: 7. Matematická indukce a rekurse. Řešení rekurentních (diferenčních) rovnic s konstantními koeficienty.

Derivace funkce Otázky

Obsah. Euler-Fermatova věta. Reziduální aritmetika. 3. a 4. přednáška z kryptografie

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Kongruence na množině celých čísel

Derivace funkce DERIVACE A SPOJITOST DERIVACE A KONSTRUKCE FUNKCÍ. Aritmetické operace

(4x) 5 + 7y = 14, (2y) 5 (3x) 7 = 74,

Klauzurní část školního kola kategorie A se koná

Matematické algoritmy (11MAG) Jan Přikryl

)(x 2 + 3x + 4),

Úlohy domácí části I. kola kategorie C

Lenka Zalabová. Ústav matematiky a biomatematiky, Přírodovědecká fakulta, Jihočeská univerzita. zima 2012

4a) Racionální čísla a početní operace s nimi

Matematické algoritmy (11MAG) Jan Přikryl. verze: :29

3. Podmíněná pravděpodobnost a Bayesův vzorec

Co víme o přirozených číslech

8 Kořeny cyklických kódů, BCH-kódy

Řešení. Hledaná dimenze je (podle definice) rovna hodnosti matice. a a 2 2 1

Definice 13.1 Kvadratická forma v n proměnných s koeficienty z tělesa T je výraz tvaru. Kvadratická forma v n proměnných je tak polynom n proměnných s

Riemannova hypotéza Martin Havlík 2. A

Matematická analýza pro informatiky I. Limita funkce

Výroková logika II. Negace. Již víme, že negace je změna pravdivostní hodnoty výroku (0 1; 1 0).

Cvičné texty ke státní maturitě z matematiky

Kongruence. 1. kapitola. Opakování základních pojmů o dělitelnosti

Jihomoravske centrum mezina rodnı mobility. T-exkurze. Teorie c ı sel, aneb elektronicky podpis a s ifrova nı

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

Variace. Mocniny a odmocniny

Zbytky a nezbytky Vazební věznice Orličky Kondr (Brkos 2010) Zbytky a nezbytky / 22

ZLOMKY A RACIONÁLNÍ ČÍSLA. Pojem zlomku. Zlomek zápis části celku. a b. a je část, b je celek, zlomková čára

Báze a dimenze vektorových prostorů

Cvičné texty ke státní maturitě z matematiky

[1] Determinant. det A = 0 pro singulární matici, det A 0 pro regulární matici

Prvočísla, dělitelnost

M - Kvadratické rovnice

Dělitelnost čísel, nejmenší společný násobek, největší společný dělitel

VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY

Úlohy krajského kola kategorie A

Lineární algebra : Polynomy

Aritmetika s didaktikou I.

CVIČNÝ TEST 15. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

Západočeská univerzita v Plzni FAKULTA PEDAGOGICKÁ KATEDRA MATEMATIKY, FYZIKY A TECHNICKÉ VÝCHOVY

Y36BEZ Bezpečnost přenosu a zpracování dat. Úvod. Róbert Lórencz. lorencz@fel.cvut.cz

Úlohy II. kola kategorie A

Jednoduchá exponenciální rovnice

DMA Přednáška Rekurentní rovnice. takovou, že po dosazení odpovídajících členů do dané rovnice dostáváme pro všechna n n 0 + m pravdivý výrok.

Transkript:

Faktorizace čísel pomocí řetězových zlomků Tento text se zabývá algoritmem CFRAC (continued fractions algorithm) pro rozkládání velkých čísel (typicky součinů dvou velkých prvočísel). Nebudeme se zde zabývat základy teorie řetězových zlomků, při důkazech se bude předpokládat, že je s ní již čtenář obeznámen. Důraz bude kladen na implementační stránku, protože ta je ve většině textů hrubě zanedbávána a autoři si obvykle vystačí s větou: Předpokládejme, že máme posloupnost řetězových zlomků... Algoritmus CFRAC je historicky prvním algoritmem, který využívá tzv. Newtonův faktorizační algoritmus. Při něm se rozkládá velké číslo N tím, že se hledají dvojice čísel x i, y i splňující x i y 2 i (mod N). Až se nalezne dostatečné množství takovýchto dvojic, vybere pouze podmnožina I indexů taková, aby součin vybraných x i byl čtverec (neboli i I x i = x 2 pro nějaké x). Označíme-li y= i I y i, dostaneme vztah a z tohoto vztahu vyplývá x 2 y 2 (mod N) (x y)(x+y) 0 (mod N). Pokud byly hodnoty x i a y i a množina I vybrány opravdu náhodně, máme pravděpodobnost asi 50 %, že x y a N mají společného vlastního dělitele. Tímto se nalezne jeden dělitel čísla N, což obvykle stačí, nebot v praxi se nejčastěji potřebuje rozkládat součin dvou prvočísel. Řetězové zlomky V algoritmem CFRAC se dvojice kongruentních čísel konstruují tak, že se počítá rozvoj čísla N do řetězového zlomku, neboli do tvaru 1 N= a0 +. 1 a 1 + 1 a 2 + a 3 + Číslo N pochopitelně nesmí být perfekní čtverec, ale v takovém případě bychom už měli rozklad N přímo. Označme p n q n = [a 0, a 1,..., a n ] a N= [a 0,...,a n 1,α n ]. Koeficienty a n lze určitě spočítat pomocíα n = (α n 1 a n 1 ) 1 a a n = [α n ], ale tento postup vyžaduje použití reálných čísel, čemuž bychom se chtěli vyhnout. Proto je lepším postupem použití následujících posloupností: 1

Tvrzení: Bud te P n a Q n posloupnosti celých čísel definované induktivně: P 0 = 0, Q 0 = 1 a Pak platí P n+1 = a n Q n P n, Q n+1 = N P2 n+1 Q n. α n = P n+ N a a n = P n+ [ N]. Q n Q n DŮKAZ: Výše uvedené vztahy platí pro n=0, předpokládejme nyní, že platí až do nějakého n 0. Máme Q n+1 P n+1 + N = Q n+1( N Pn+1 ) N an Q n + P n = N P 2 Q n+1 n N+ Pn = a nq n =α n a n = 1 Q n Q n α n 1 Ještě potřebujeme, že čísla P n a Q n jsou celá. Platí N P 2 n+1 = N (a nq n P n ) 2 = = N P 2 n a2 n Q2 n + 2a nq n P n = Q n (Q n 1 a 2 n Q n+ 2a n P n ) a celočíselnost se snadno dokáže indukcí. Vzorec pro a n plyne z a n = [α n ] a faktu, že P n a Q n jsou celá čísla. Čísla Q n ve dvojici s p n 1 tvoří hledané dvojice pro Newtonovu faktorizaci: Tvrzení: Pro každé n platí p 2 n 1 Nq2 n 1 = ( 1)n Q n. DŮKAZ: Číslo N se dá, pro každé n, rozepsat jako N= α n p n 1 + p n 2 α n q n 1 + q n 2. Po dosazení zaα n dostaneme N ( (Pn + N)q n 1 + Q n q n 2 ) = (Pn + N)p n 1 + Q n p n 2, což po úpravě dává Nq n 1 + (P n q n 1 + Q n q n 2 ) N= P n p n 1 + Q n p n 2 + p n 1 N. Tato rovnost je vq( N) splněna právě když platí p n 1 = P n q n 1 + Q n q n 2 a Nq n 1 = P n p n 1 + Q n p n 2. Po vynásobení prvního řádku p n 1 a druhého q n 1 a jejich odečtení dostaneme p 2 n 1 Nq2 n 1 = P np n 1 q n 1 + Q n p n 1 q n 2 P n p n 1 q n 1 Q n p n 2 q n 2 = (p n 1 q n 2 p n 2 q n 1 )Q n = ( 1) n Q n, což se mělo dokázat. 2

Počítání posloupností Pro faktorizaci algoritmem CFRAC využijeme vztah ( 1) n Q n p 2 n 1 (mod N). Čísla p n rostou poměrně rychle, nicméně my nepotřebujeme znát jejich přesnou hodnotu, nám ji stačí znát modulo N. Takže můžeme počítat p n+1 a n+1 p n + p n 1 (mod N). Dále potřebujeme spočítat čísla P n, Q n a a n. Vzorce, které jsme uvedli vyžadují provést dvojí dělení, a to při výpočtu a n+1 a při výpočtu Q n+1. Nicméně v obou případech se dělí číslem Q n, čehož se dá při výpočtu využít. Označíme g=[ N] a přepíšeme vzorec pro výpočet a n ve formě dělení se zbytkem Pomocí r n se dá P n vyjádřit jednodušeji: A zjednoduší se i výpočet Q n : P n + g=a n Q n + r n, 0 r n < Q n. P n+1 = a n Q n P n = a n Q n (a n Q n + r n g)=g r n. Lemma: Pro všechna n>1 platí Q n+1 = Q n 1 + a n (r n r n 1 ). DŮKAZ: Máme N P 2 n+1 = N (a nq n P n ) 2 = N P 2 n a2 n Q2 n + 2a nq n P n z čehož už plyne tvrzení věty. = Q n (Q n 1 a 2 nq n + 2a n P n ) = Q n (Q n 1 + a n (P n + P n a n Q n ))= Q n (Q n 1 + a n (P n P n+1 )) = Q n (Q n 1 + a n (g r n 1 g+r n )=Q n (Q n 1 + a n (r n r n 1 )) Nyní shrneme celý výpočet posloupností do stručného algoritmu. V praxi se často číslo N násobí malým koeficientem k, aby mělo výhodnější vlastnosti (viz níže). Proto se do řetězového zlomku rozvádí kn místo N. Potřebujeme spočítat následující posloupnosti: p n, Q n, P n, a n a r n. Avšak místo P n je vhodnější pamatovat si číslo P n + g. Algoritmus: (i) Určíme malý koeficient k. (ii) Položíme Q 0 1, p 1 1, r 0 0 a g [ kn]. (iii) Položíme Q 1 kn g 2, (P 0 + g) g, a 0 g, p 0 g a (P 1 + g) 2g. (iv) Položíme n 1 (v) Dělením se zbytkem spočteme a n a r n jako (P n + g)=a n Q n + r n. (vi) Spočteme p n (a n p n 1 + p n 2 ) mod N. (vii) Spočteme (P n+1 + g) 2g r n. (viii) Spočteme Q n+1 Q n 1 + a n (r n r n 1 ). (ix) Zvýšíme n o jednu a vrátíme se k bodu (v). 3

Pro výpočty je důležité vědět, jak velkých hodnot dosahují jednotlivé proměnné. Je jasné, že p k je menší než N (je počítáno modulo N). Pro ostatní proměnné platí Lemma: Všechny hodnoty P n + g, Q n, a n a r n jsou nezáporné a menší než 2 kn. DŮKAZ: Číslo r n je podle definice nezáporné, takže z bodu (vii) je vidět P n + g 2g. Dále pokračujeme indukcí. Předpokládejme, že všechny vztahy platí pro P n +g a Q n 1. Protože a n je kladné, je i Q n kladné číslo. Dále z bodu (v) vyplývá a n 2g a Q n 2g. Z definice máme r n < Q n. Takže okamžitě dostaneme P n+1 + g>0. Ve skutečnosti platí dokonce P n 0, ale důkaz tohoto faktu by byl složitější. V algoritmu se provádí dvojí dělení v krocích (v) a (vi). V mnoha případech se ale nevyplatí dělit, protože číslo a k je v drtivé většině hodně malé, velice často je dokonce rovno 1. Pak lze dělení nahradit odčítáním. Příklad: Spočtěme posloupnosti pro N = 187 a k = 3. n P n + g Q n a n r n p n 1 Q n rozloženo 0 23 1 20 0 1 1 46 32 1 14 23 2 5 2 32 15 2 2 24 3 5 3 44 8 5 4 71 2 3 4 42 25 1 17 5 5 2 5 29 21 1 8 76 3 7 6 38 16 2 6 81 2 4 7 40 17 2 6 51 17 8 40 16 2 8 183 2 4 Skombinováním 1. a 3. řádku dostaneme 16 2 137 2 (mod 187) a číslo 137 16=121 má netriviálního společného dělitele se 187, a to 11. Hledání závislostí Hledáme takové součiny čísel ( 1) n Q n, které dají čtverec. To znamená, že mocniny v prvočíselném rozkladu ( 1 považujeme také za prvočíslo) takovéhoto čísla jsou všechny sudé. Když provedeme rozklad každého z čísel ( 1) n Q n na prvočinitele a exponenty zapíšeme modulo 2 do matice, jejíž řádky odpovídají n a sloupce prvočíslům, úloha se převede na úlohu najít mezi řádky matice netriviální kombinaci modulo 2. V praxi nerozkládáme všechna čísla Q n, dáváme si mez, jaká maximální prvočísla povolíme v rozkladu čísel Q n. Prvočíslům menším než tato mez se říká faktorizační báze. Vyplatí se začínat s menší faktorizační bází a případně tuto bázi rozšiřovat, pokud se nepodaří N rozložit pomocí malé faktorizační báze. Když nasbíráme přibližně tolik rozložených čísel, jaká je délka faktorizační báze, můžeme hledat závislosti. Sepíšeme vedle sebe matici exponentů a jednotkovou matici 4

a provedeme Gaussovu eliminaci na řádky v našem příkladě bychom měli 1 2 3 5 7 11 13 17 1 2 3 4 5 6 7 8 32 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 15 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 8 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 25 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 21 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 17 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 což se Gaussovou eliminací převede na 1 2 3 5 7 11 13 17 1 2 3 4 5 6 7 8 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 přičemž řádky označené se vynulovaly a matice napravo ukazuje, kombinací jakých řádků tu nulu dostaneme. Čtvrtý řádek odpovídá již zmíněné kongruenci 16 2 137 2 (mod 187), další řádky kongruencím 5 2 5 2 (mod 187), 4 2 81 2 (mod 187) a 4 2 ( 4) 2 (mod 187). Matice, které dostaneme mají velice malou hodnost, protože čísla, která se dostanou jako Q n se často opakují. Takže pokud nenalezneme vhodnou závislost při dvojnásobném počtu řádků oproti sloupcům, obvykle se vyplatí spíše rozšířit faktorizační bázi, než pokračovat s tou stávající. Někdy se stane, že pro sudé n je Q n čtverec. Pak máme vztah Q n 2 A n 1 (mod N) a můžeme rovnou vyzkoušet rozklad. V našem příkladě toto nastane pro n= 4, 6, 8. Čtvrtý a osmý řádek nám nic nedají, ale v šestém dostaneme 4 2 81 2 (mod 187) a rozdíl 77 má se 187 netriviálního společného dělitele. Ještě je vhodné poznamenat, že je rychlejší provádět Gaussovu eliminaci zprava doleva, protože sloupce odpovídající vyšším prvočíslům jsou méně zaplněny jedničkami. Malý koeficient Chtěli bychom volit faktorizační bázi tak, aby se co nejvíce čísel Q n rozložilo. Bohužel některá prvočísla nemohou v žádném případě Q n dělit. Je dobré je předem odhalit a bud to zařídit, aby Q n mohla být těmito prvočísly dělena, anebo tato prvočísla vyřadit z faktorizační báze. 5

Tvrzení: Pokud nějaké liché prvočíslo p dělí nějaké číslo Q n, pak je Legendrův symbol (kn/p) roven 0 nebo 1. DŮKAZ: Předpokládejme, že p dělí Q n pro nějaké n 1. Pak platí p 2 n 1 knq2 n 1 0 (mod p). Čísla p 2 n 1 a q2 n 1 jsou nesoudělná, takže p nemůže dělit q2 n 1. Takže máme (p n 1 /q n 1 ) 2 kn (mod p) a kn je kvadratické reziduum modulo p. Tvrzení: Necht 2 nedělí kn. Pokud je nějaké Q n dělitelné 4, respektive 8, pak je kn 1 (mod 4) respektive (mod 8). DŮKAZ: Necht j=4 nebo j=8. Pak j dělí Q n se dá zapsat jako p 2 n 1 knq n 1 0 (mod j). Čísla p n 1 a q n 1 jsou nesoudělná, takže žádné z nich nemůže být dělitelné 2. Tím dostaneme p 2 n 1 q2 n 1 1 (mod j) a nutně kn 1 (mod j). Při faktorizaci relativně menšího N můžeme položit k=n mod 4 popřípadě k= N mod 8, čímž zajistíme, že čísla Q n budou moci být dělitelná 4 popřípadě 8, což je výhodné, nebot na počítači se dvojkou dělí velice snadno. Při faktorizaci větších čísel můžeme vyzkoušet vícero multiplikátorůk spočítat Legendrovy symboly pro kn a nakonec si vybrat to k, pro které do faktorizační báze padne co nejvíce nejmenších prvočísel. Musíme mít ale na paměti, že čím je větší k, tím je větší i kn i kn a tím bude výpočet složitější. Když určíme hodnotu k, vybíráme faktorizační bázi; do této báze vybíráme pouze ta prvočísla, která mají správný Legendrův symbol. Nesmíme zapomenout na dělitele čísla k už jsme viděli, že se vyskytují v rozkladu Q n. Velikost faktorizační báze se obvykle volí takto: Číslic v N FB 20 log 2 (N) 21, 22, 23 150 24, 25 200 26, 27, 28 300 29, 30 400 31, 32 450 33, 34 500 35, 36 550 37, 38 600 39, 40 650 Literatura [1] H. COHEN: A Course in Computational Algebraic Number Theory, Springer, (1993) [2] A. DRÁPAL: Teorie čísel, text k přednášce [3] M. A. MORRISON, J. BRILLHART: A Method of Fatoring and the Factorization of F 7, Math. Comp., vol. 29, no. 129, (1975), 183 205 6