03.12.2012 Views

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 ...

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!