RSA og den heri anvendte matematiks historie - Institut for Natur ...
RSA og den heri anvendte matematiks historie - Institut for Natur ...
RSA og den heri anvendte matematiks historie - Institut for Natur ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
2.2 Euklids algoritme <strong>og</strong> Bézouts i<strong>den</strong>titet 27<br />
Bevis<br />
Hvis vi kan vise, at mæng<strong>den</strong> af fællesdivisorer af a <strong>og</strong> b er lig mæng<strong>den</strong><br />
af fællesdivisorer af b <strong>og</strong> r, så må der nødvendigvis gælde, at sfd(a, b) =<br />
sfd(b, r), <strong>for</strong>di hvis mængderne er de samme så må det største element i<br />
de to mængder jo <strong>og</strong>så være det samme.<br />
Antag først, at vi har et heltal d hvorom der gælder, at d | a <strong>og</strong> d | b.<br />
Ifølge sætning 2.3 (ii) findes der da et heltal q således, at d | bq <strong>og</strong> der vil<br />
<strong>og</strong>så gælde at d | −bq. Ifølge sætning 2.3 (i) har vi, da d | a (per antagelse)<br />
<strong>og</strong> d | −bq, at d | a − bq. Da r = a − bq har vi altså, at d | r. Altså vil<br />
enhver fællesdivisor af a <strong>og</strong> b <strong>og</strong>så være en fællesdivisor af b <strong>og</strong> r.<br />
Dernæst antages, at et heltal d er divisor i både b <strong>og</strong> r, altså at d | b <strong>og</strong><br />
d | r. På tilsvarende vis som oven<strong>for</strong> kan vi her udlede, at d | bq + r = a,<br />
altså at enhver fællesdivisor af b <strong>og</strong> r <strong>og</strong>så er en fællesdivisor af a <strong>og</strong> b.<br />
Mæng<strong>den</strong> af fællesdivisorer <strong>for</strong> a <strong>og</strong> b henholdsvis b <strong>og</strong> r er altså ens,<br />
hvor<strong>for</strong> de to par af heltal <strong>og</strong>så må have samme største fællesdivisor.<br />
Eksempel 2.13<br />
Hvis vi har 36 = 24 · 1 + 12 svarende til a = bq + r vil sfd(36, 24) =<br />
sfd(24, 12). Vi ved fra tidligere, at sfd(36, 24) = 12 <strong>og</strong> at sfd(24, 12) <strong>og</strong>så<br />
er lig 12 er let at overbevise sig om. ⋄<br />
Nu er vi klar til at <strong>for</strong>mulere Euklids algoritme.<br />
Algoritme 2.14: Euklids algoritme<br />
Lad inddata i algoritmen være to heltal a <strong>og</strong> b med b > 0 <strong>og</strong> a ≥ b. Første<br />
skridt er at sætte a = r0 <strong>og</strong> b = r1. De følgende skridt består i at anvende<br />
sætning 2.11 gentagende gange, hvorved fås:<br />
r0 = r1q1 + r2<br />
r1 = r2q2 + r3<br />
.<br />
rn−3 = rn−2qn−2 + rn−1<br />
rn−2 = rn−1qn−1 + rn<br />
rn−1 = rnqn,<br />
hvor r0 > r1 > r2 > . . . ≥ 0. Uddata <strong>for</strong> algoritmen er <strong>den</strong> sidste rest rn<br />
<strong>for</strong>skellig fra 0 i følgen af rester ri <strong>for</strong> i = 1, 2, . . . , n. Denne rest er lig<br />
sfd(a, b).<br />
Fra afsnit 1.4 ved vi at en algoritme bør opfylde syv krav. Opfyldelsen<br />
af de fleste af disse krav følger <strong>for</strong>holdsvist nemt af <strong>for</strong>muleringen af<br />
algoritmen oven<strong>for</strong>, men to af dem kræver lidt mere argumentation.<br />
Sætning 2.15<br />
Der gælder, at Euklids algoritme opfylder kravene om terminering <strong>og</strong><br />
korrekthed, hvor der med korrekthed <strong>for</strong>stås, at sfd(a, b) = rn.