|
© h.hofstede (h.hofstede@hogeland.nl)
|
|
Ontbinden in priemfactoren. |
|
|
|
|
De meest kinderlijke
manier om een getal n te ontbinden in zijn
priemfactoren is gewoon door te proberen door welke priemgetallen je het
allemaal kunt delen.
Oké, wie een beetje slim is ziet natuurlijk dat je het maar hoeft te
proberen tot en met √n, want als het door een groter getal
deelbaar was, dan was het ook door een kleiner getal deelbaar, en dat
hadden we dan al gevonden.
Voor echt grote getallen (van bijvoorbeeld meer dan 20 cijfers) zijn
betere manieren nodig.......
Je raadt het al: hier komt er eentje. |
|
|
|
|
Kwadratische zeef. |
|
|
|
|
De kwadratische zeef
is gebaseerd op de volgende stelling: |
|
|
|
|
Stel dat n = p • q
met p en q twee verschillende priemgetallen,
dan heeft de vergelijking x2
☰ 1 mod n vier
verschillende oplossingen {1, n - 1, a, b}
mod n
waarbij ggd(n, a - 1) = p
en ggd(n , b - 1) = q
|
|
|
|
|
|
Bewijs. |
|
|
x2
☰ 1 mod pq is gelijk aan het
stelsel x2 ☰ 1
mod p en x2
☰ 1 mod q (mits ggd(p, q)
= 1 maar dat is natuurlijk zo)
immers: (p is een deler van x2
- 1 en q is een deler van x2
- 1) ⇔ (pq een deler van x2
- 1)
Er zijn nu vier oplossingen mod n:
x ☰ 1 mod p en x ☰ 1 mod q
x ☰ -1 mod p en x ☰ -1 mod q
x ☰ 1 mod p en x ☰ -1 mod q
x ☰ -1 mod p en x ☰ 1 mod q
De eerste geeft x ☰ 1 (mod n)
De tweede geeft x ☰ -1 (mod n)
Noem de derde oplossing a, dan is ggd(n, a
- 1) = p
Noem de vierde oplossing b, dan is ggd(n, b - 1)
= q |
q.e.d. |
|
|
|
|
|
|
Hoe gaan we dit
toepassen?
Stel dat we een groot getal n willen ontbinden in priemgetallen.
Stel dat we twee getallen x en y kunnen vinden waarvoor
x2 ☰ y2 (mod n) met
y inverteerbaar mod n
Dan geldt (x/y)2
☰ 1 (mod n)
Oké, maar hoe vinden we zulke x en y waarvoor x2
☰ y2 (mod n) ?????????
Dat is het makkelijkst met een voorbeeld uit te leggen. |
|
|
|
|
Stel dat we n = 53953 willen ontbinden
√53953 = 232,27..... en dat betekent dat 2332
- n een vrij klein getal zal zijn.
2332 - 53953 = 336
We ontbinden nu 336: 336 = 24 • 3 • 7
dus 2332 - 53953 = 24 • 3
• 7 (mod n)
Dit gaan we voor een aantal getallen rondom 233 op dezelfde
manier doen (daarbij telt -1 ook als "priemfactor").
We nemen alleen degenen met priemfactoren allemaal kleiner
dan 50.
Dat geeft:
2232 - 53953 = -4224
= -27 • 3 • 11
2242 - 53953 = -3777 = lukt niet
kleiner dan 50
2252 - 53953 = -3328 = -28 • 13
2262 - 53953 = -2877 = lukt niet
2272 - 53952 = -2424 = lukt niet
2282 - 53953 = -1969 = lukt niet
2292 - 53953 = -1512 = -23 • 33
• 7
2302 - 53953 = -1053 = -34 • 13
2312 - 53953 = -592 = -24 • 37
2322 - 53953 = -129 = -3 • 43
2332 - 53953 = 336 = 24 • 3 • 7
2342 - 53953 = 803 = lukt niet
2352 - 53953 = 1272 = lukt niet
2362 - 53953 = 1743 = lukt niet
2372 - 53953 = 2216 = lukt niet
2382 - 53952 = 2691 = 32 • 13 •
23
2392 - 53953 = 3168 = 25 • 32
• 11
2402 - 53953 = 3647 = lukt niet
2412 - 53953 = 4128 = 25 • 3 •
43
2422 - 53953 = 4611 = lukt niet
2432 - 53953 = 5096 = lukt niet
Nu proberen we er twee uit deze lijst te kiezen zodat
samengenomen alle priemfactoren op een even aantal uitkomen.
Je ziet dat 2252 • 2302 =
(-28 • 13) • (-34 • 13) = (28
• 34 • 132) = (24 • 32
• 13)2 = 18722
(je kunt dus met deze lijst stoppen zodra zoiets lukt,
dus we hadden bij 230 al kunnen stoppen)
Daarmee hebben we zo'n x2 ☰
y2 gevonden.
Bereken de ggd van beide getallen: ggd(53953, 225 •
230 - 1872) = ggd(53953, 49878) = 163
(dat laatste natuurlijk met het Euclidisch algoritme)
Eindresultaat 59353 =
163 • 331 |
|
|
|
|
|
© h.hofstede (h.hofstede@hogeland.nl)
|