Dixons factorisatiemethode

In de getaltheorie, een deelgebied van de wiskunde, wordt de Dixons factorisatiemethode (ook wel Dixons algoritme genoemd) algemeen gebruikt voor de factorisatie van positieve gehele getallen in priemgetallen; het is een methode voor de factorisatie van gehele getallen. Het algoritme is in 1981 opgesteld door John Dixon, een wiskundige van de Carleton University.

Basisidee

Dixons methode voor de ontbinding van het gehele getal N {\displaystyle N} is gebaseerd op het uitgangspunt van Fermats factorisatiemethode door te zoeken naar twee kwadraten die modulo N {\displaystyle N} equivalent zijn. Fermats factorisatiemethode vindt zulke kwadraten door systematisch alle mogelijkheden na te gaan. Dat kost in het algemeen veel rekentijd.

Daarom vervangt Dixon in zijn methode de voorwaarde ‘is het kwadraat van een geheel getal’ door de veel zwakkere voorwaarde ‘heeft alleen kleine priemfactoren’.

Het algoritme zoekt nu kwadraten z i 2 p 1 m 1 p n m n ( mod N ) {\displaystyle z_{i}^{2}\equiv p_{1}^{m_{1}}\cdot \ldots \cdot p_{n}^{m_{n}}{\pmod {N}}} die modulo N {\displaystyle N} het product zijn van machten van een vast aantal kleine priemgetallen p 1 , , p n {\displaystyle p_{1},\ldots ,p_{n}} en zoekt het product van een aantal van zulke kwadraten waarin alle machten van de priemgetallen even zijn:

z 1 2 z 2 2 z r 2 p 1 2 M 1 p n 2 M n ( mod N ) {\displaystyle z_{1}^{2}z_{2}^{2}\ldots z_{r}^{2}\equiv p_{1}^{2M_{1}}\cdot \ldots \cdot p_{n}^{2M_{n}}{\pmod {N}}}

Dan is:

x 2 z 1 2 z 2 2 z r 2 ( p 1 M 1 p n M n ) 2 y 2 ( mod N ) {\displaystyle x^{2}\equiv z_{1}^{2}z_{2}^{2}\ldots z_{r}^{2}\equiv \left(p_{1}^{M_{1}}\cdot \ldots \cdot p_{n}^{M_{n}}\right)^{2}\equiv y^{2}{\pmod {N}}}

en daarmee is

x 2 y 2 = ( x + y ) ( x y ) {\displaystyle x^{2}-y^{2}=(x+y)(x-y)} een veelvoud van N {\displaystyle N} .

Algoritme

Kies een bovengrens B {\displaystyle B} voor de te gebruiken priemgetallen p 1 = 2 , p 2 = 3 , , p k B {\displaystyle p_{1}=2,p_{2}=3,\ldots ,p_{k}\leq B} . Deze verzameling priemgetallen wordt de factorbasis genoemd. Zoek daarna getallen ( z i ) {\displaystyle (z_{i})} in het bereik N z i N {\displaystyle \lceil {\sqrt {N}}\rceil \leq z_{i}\leq N} waarvan de kwadraten modulo N {\displaystyle N} B-glad zijn, dus alleen priemfactoren uit de factorbasis hebben.

z i 2 = j = 1 k p j m i j ( mod N ) {\displaystyle z_{i}^{2}=\prod _{j=1}^{k}p_{j}^{m_{ij}}{\pmod {N}}} .

Vervolgens wordt uit de getallen ( z i ) {\displaystyle (z_{i})} een selectie gemaakt, waarvan het product alleen even machten van de priemgetallen bevat. Dit kan gebeuren door gebruik te maken van methoden uit de lineaire algebra.

Zij nl. M = ( m i j ) {\displaystyle M=(m_{ij})} de matrix met de machten, dan wordt een vector c {\displaystyle c} gezocht waarvoor M c 0 ( mod 2 ) {\displaystyle Mc\equiv 0{\pmod {2}}} . De vector c {\displaystyle c} geeft aan welke van de ( z i ) {\displaystyle (z_{i})} tot de gewenste selectie behoren.

Als ggd ( x y , N ) {\displaystyle \operatorname {ggd} (x-y,N)} geen echte deler van N {\displaystyle N} oplevert, is kennelijk x ± y ( mod N ) ) {\displaystyle x\equiv \pm y{\pmod {N}})} , en moet men een andere selectie proberen of andere ( z i ) {\displaystyle (z_{i})} bepalen, eventueel met een nieuwe factorbasis.

Voorbeelden

Voorbeeld 1

Neem voor het ontbinden van het getal 65621 als factorbasis {2,3,5,7}. Er geldt: 65621 > 256 {\displaystyle {\sqrt {65621}}>256} . Het eerste getal waarvan het kwadraat modulo 65621 alleen factoren uit de factorbasis heeft is 261:

261 2 mod 65621 = 2500 = 2 2 5 4 {\displaystyle 261^{2}\mod 65621=2500=2^{2}\cdot 5^{4}}

Omdat de exponenten van de priemgetallen beide even zijn, kan gelijk de volgende stap gedaan worden:

( 261 2 5 2 ) ( 261 + 2 5 2 ) = 211 × 311 mod 65621 = 0 {\displaystyle (261-2\cdot 5^{2})(261+2\cdot 5^{2})=211\times 311\mod 65621=0}

Dus

65621 = 211 × 311 {\displaystyle 65621=211\times 311}

Voorbeeld 2

Neem voor het factoriseren van 94563 de factorbasis {2,3,5,7,11,13}.

821 2 mod 94563 = 12100 = 2 2 5 2 11 2 {\displaystyle 821^{2}\mod 94563=12100=2^{2}\cdot 5^{2}\cdot 11^{2}}

Dus geldt:

( 821 2 × 5 × 11 ) ( 821 + 2 × 5 × 11 ) = 711 × 931 ( mod 94563 ) = 0 {\displaystyle (821-2\times 5\times 11)(821+2\times 5\times 11)=711\times 931{\pmod {94563}}=0}

en

711 × 931 = 94563 × 7 {\displaystyle 711\times 931=94563\times 7}

Eenvoudig is te zien dat 711 deelbaar is door 9, en 931 door 7, zodat

3 2 × 79 × 133 = 94563 {\displaystyle 3^{2}\times 79\times 133=94563}

Hoewel het niet moeilijk is in te zien dat

133 = 7 × 19 {\displaystyle 133=7\times 19}

kan dit ook met het algoritme bepaald worden.

13 2 mod 133 = 36 = 2 2 × 3 2 {\displaystyle 13^{2}\mod 133=36=2^{2}\times 3^{2}}
( 13 2 × 3 ) ( 13 + 2 × 3 ) = 7 × 19 = 133 {\displaystyle (13-2\times 3)(13+2\times 3)=7\times 19=133}

Als eindresultaat volgt:

94563 = 3 2 × 7 × 19 × 79 {\displaystyle 94563=3^{2}\times 7\times 19\times 79}

Kwadratische zeef

De kwadratische zeef is een optimalisering van Dixons methode. Daarmee worden geschikte waarden voor x {\displaystyle x} in de buurt van N {\displaystyle {\sqrt {N}}} gekozen zodanig dat x 2 ( mod N ) {\displaystyle x^{2}\!\!\!{\pmod {N}}} klein is en de kans op het vinden van een glad getal sterk vergroot wordt.

Bronnen, noten en/of referenties
  • (en) J. D. Dixon, "Asymptotically fast factorization of integers," Math. Comput., 36(1981), p. 255-260.
  • Dit artikel of een eerdere versie ervan is een (gedeeltelijke) vertaling van het artikel Dixon's factorization method op de Engelstalige Wikipedia, dat onder de licentie Creative Commons Naamsvermelding/Gelijk delen valt. Zie de bewerkingsgeschiedenis aldaar.