Tilbake
1.2

1.2 Euklids algoritme frem og baklengs (Bézout)

Fagets aller viktigste teknikk: Euklids algoritme som divisjonskjede for å finne gcd, og den baklengs substitusjonskjeden som skriver gcd = ax+by (Bézout) — føringen sensor krever fullt utskrevet, og motoren bak diofant, invers og RSA.

60 min
7 oppgaver
Euklids algoritme frembaklengs (Bézout)
Din fremgang i kapitlet
0 / 7 oppgaver

Forkunnskaper

Fra boka: kap. 1.1 — divisjonsalgoritmen, delelighet og gcd\gcd.

Sist du var her. De to resultatene fra kap. 1.1 som dette kapitlet står helt på, ferdig oppfrisket:

Divisjonsalgoritmen. For hvert helt tall aa og hvert positivt bb finnes nøyaktig ett par q,rq,r med
a=qb+r,0r<b.a=qb+r,\qquad 0\le r<b.
Dette er den ene operasjonen Euklids algoritme gjentar. Kravet 0r<b0\le r<b er det som gjør at algoritmen stopper.

Lineærkombinasjonsregelen. Hvis dad\mid a og dbd\mid b, så
d(ax+by)for alle hele tall x,y.d\mid(ax+by)\qquad\text{for alle hele tall }x,y.
Dette er den ene regelen som forklarer hvorfor algoritmen virker — den brukes i beviset for nøkkellemmaet nedenfor.

Fra videregående er ingenting påkrevd, men Polynomer og polynomdivisjon gir en nyttig analogi: Euklids algoritme finnes også for polynomer, og ser der helt lik ut.

To rektangler og et gulv

Du skal legge kvadratiske fliser i et rom som er 803803 cm langt og 154154 cm bredt, uten å skjære en eneste flis. Hvor stor kan flisen være?

Svaret er gcd(803,154)\gcd(803,154), og du kan finne det uten å faktorisere noe: legg først så mange 154154-fliser du får plass til langs lengden. Det blir fem, og du har 3333 cm igjen. Nå er problemet redusert — den nye biten er 154×33154\times 33, og du fortsetter på samme måte. Til slutt står du med en bit som går opp i seg selv, og den er svaret.

Det er Euklids algoritme. Den er over to tusen år gammel, den bruker ingenting annet enn divisjon med rest, og den er raskere enn faktorisering på store tall — for disse to tallene tar den fire linjer.

Men den gjør mer enn å finne gcd\gcd. Går du kjeden baklengs, får du noe som er strengt sterkere: du får skrevet gcd\gcd som en kombinasjon 803x+154y803x+154y. Det er den delen som gjør algoritmen til fagets viktigste teknikk, for de to tallene xx og yy er nøkkelen til diofantiske likninger, til modulære inverser, og til dekrypteringsnøkkelen i RSA.

Derfor er dette kapitlet delt i to halvdeler som må sitte like godt: frem for å finne gcd\gcd, og baklengs for å finne xx og yy.

Tidsanslag for kapitlet: ~60 minutter lesetid, fordelt på seks løkker à 7–12 minutter. Regner du med penn, som du bør her av alle steder, legg til omtrent halvparten.

Løkke 1: Divisjonskjeden frem

~9 minutter.

Prosedyren er kort nok å beskrive i tre setninger, og du skal kunne den utenat. Vi tar den først, og forklarer hvorfor den virker i neste løkke.

Euklids algoritme (frem)
En prosedyre som finner gcd(a,b)\gcd(a,b) ved gjentatt divisjon med rest, uten å faktorisere noe.

Oppskriften, med a>b>0a>b>0:

1. Del aabb: a=q1b+r1a=q_1b+r_1 med 0r1<b0\le r_1<b.
2. Er r1=0r_1=0, er gcd(a,b)=b\gcd(a,b)=b, og du er ferdig.
3. Ellers gjentar du med det forrige tallet du delte på og resten: del bbr1r_1.
4. Fortsett slik til resten blir 00. Den siste resten som ikke var 00, er gcd(a,b)\gcd(a,b).

Med symboler er dette divisjonskjeden
rk1=qk+1rk+rk+1,0rk+1<rk.r_{k-1}=q_{k+1}r_k+r_{k+1},\qquad 0\le r_{k+1}<r_k.

Prosedyren må sitte utenat. Det er det tallmessige håndverket i 15 av 15 eksamenssett, og under kode D har du ingen alternativ metode for tall i denne størrelsesordenen.

Den vanligste feilen i steg 3: å dele det opprinnelige aa på den nye resten. Du skal alltid dele divisoren fra forrige linjeresten fra forrige linje. Tallene flytter seg ett hakk til venstre for hver linje.

Divisjonskjeden
Rekken av divisjoner Euklids algoritme produserer, skrevet under hverandre:

a=q1b+r1,b=q2r1+r2,r1=q3r2+r3,,rk1=qk+1rk+0.a=q_1b+r_1,\quad b=q_2r_1+r_2,\quad r_1=q_3r_2+r_3,\quad\dots,\quad r_{k-1}=q_{k+1}r_k+0.

Legg merke til mønsteret, for det er den beste kontrollen du har mens du regner: hvert tall opptrer to ganger nedover kjeden — først som rest, så som divisor, så som dividend. Bryter mønsteret, har du gjort en avskrivningsfeil.

Restene r1>r2>r3>r_1>r_2>r_3>\dots er strengt avtakende og ikke-negative, siden hver rest er mindre enn divisoren den kom fra (0r<b0\le r<b i divisjonsalgoritmen). Derfor må kjeden nå 00 etter endelig mange steg.

Kjeden er også arbeidsmaterialet for baklengs-halvdelen. Ikke visk den ut når du har funnet gcd\gcd — du trenger hver linje igjen om et øyeblikk.

Hvorfor algoritmen alltid stopper
Restene danner en strengt avtakende følge av ikke-negative hele tall:

b>r1>r2>0.b>r_1>r_2>\dots\ge 0.

En slik følge kan ikke være uendelig — det finnes bare endelig mange hele tall mellom 00 og bb. Altså blir en rest 00 etter endelig mange steg, og algoritmen stopper.

Dette er utledes på stedet og tar én linje å si, men det er ikke bare formalisme: det er argumentet for at prosedyren er en algoritme og ikke bare et forsøk.

Hvor rask er den? Verste tilfelle er nabotall i Fibonacci-følgen, og selv da vokser antall linjer bare som logaritmen av tallene. Praktisk konsekvens for eksamen: for firesifrede tall får du typisk 4–6 divisjonslinjer. Er kjeden din på tolv linjer, har du sannsynligvis regnet feil et sted — det er en gratis kontroll.

Siste ikke-null rest
Svaret Euklids algoritme gir: den siste resten før resten blir 00.

Dette er stedet folk leser av feil tall under tidspress. Kjeden ender slik:

,rk1=qrk+0.\dots,\qquad r_{k-1}=q\cdot r_k+0.

Her er svaret rkr_kdivisoren i den siste linja, som samtidig er resten i linja over. Det er ikke rk1r_{k-1}, og det er ikke 00.

Kontrollen tar fem sekunder og bør gjøres hver gang: sjekk at tallet ditt deler begge de opprinnelige tallene. Får du gcd(803,154)=11\gcd(803,154)=11, sjekk at 803=1173803=11\cdot 73 og 154=1114154=11\cdot 14. Stemmer begge, er gcd\gcd i hvert fall en felles divisor — og Euklids algoritme garanterer at den er den største.

✏️Euklids algoritme frem: gcd(1071, 462)

Finn gcd(1071,462)\gcd(1071,462) med Euklids algoritme.

(i) Divisjonskjeden frem. Vi deler gjentatt med rest, ved Euklids algoritme, til resten blir 00:

1071=2462+1471\,071 = 2\cdot 462 + 147
462=3147+21462 = 3\cdot 147 + 21
147=721+0147 = 7\cdot 21 + 0

Den siste resten som ikke er 00, er 2121. Altså er gcd(1071,462)=21\gcd(1\,071,462)=21. Kjeden har 3 divisjonslinjer.

Kontroll. Deler 2121 begge tallene? 1071=21511071=21\cdot 51 og 462=2122462=21\cdot 22. Ja, begge går opp.

Legg merke til hvordan tallene flytter seg. I linje 1 deler vi 10711071462462 og får resten 147147. I linje 2 deler vi 462462 — divisoren fra forrige linje — på 147147 — resten fra forrige linje. Aldri det opprinnelige 10711071 igjen. Det er hele mekanikken.

Sluttsvar: gcd(1071,462)=21\gcd(1071,462)=21.

📝Oppgave 1

Regn ut gcd(1440,693)\gcd(1440,693) med Euklids algoritme. Før divisjonskjeden linje for linje, og oppgi hvor mange divisjonslinjer du brukte.

📝Oppgave 2
a) Regn ut gcd(1105,391)\gcd(1105,391) med Euklids algoritme.
b) Kontroller svaret ved å sjekke at det deler begge tallene.

Løkke 2: Hvorfor algoritmen virker

~8 minutter.

Ett lemma bærer hele prosedyren. Det er verdt de fem minuttene, fordi det samme argumentet dukker opp igjen i beviset for Bézouts identitet og i kap. 6.3.

— naturlig pausepunkt —

📜Euklids nøkkellemma
For hele tall aa, b>0b>0 med a=qb+ra=qb+r:

gcd(a,b)=gcd(b,r).\gcd(a,b)=\gcd(b,r).

Bevis. Vi viser at de to parene har nøyaktig de samme felles divisorene. Da har de også samme største.

Retning 1. La dd være en felles divisor i aa og bb. Siden r=aqbr=a-qb er en lineærkombinasjon av aa og bb, gir lineærkombinasjonsregelen fra kap. 1.1 at drd\mid r. Altså er dd en felles divisor i bb og rr.

Retning 2. La dd være en felles divisor i bb og rr. Siden a=qb+ra=qb+r er en lineærkombinasjon av bb og rr, gir samme regel at dad\mid a. Altså er dd en felles divisor i aa og bb.

De to mengdene av felles divisorer er dermed like, og spesielt er de største like: gcd(a,b)=gcd(b,r)\gcd(a,b)=\gcd(b,r). \blacksquare

Intuisjon: resten rr inneholder all informasjon om felles divisorer som aa hadde. Du kaster bort qbqb-delen, og mister ingenting — fordi bb er med i det nye paret uansett.

Hvorfor lemmaet gir algoritmen: hver linje i divisjonskjeden erstatter paret (a,b)(a,b) med det mindre paret (b,r)(b,r) uten å endre gcd\gcd. Til slutt står du med paret (rk,0)(r_k,0), og gcd(rk,0)=rk\gcd(r_k,0)=r_k siden alt deler 00. Derfor er siste ikke-null rest svaret.

gcd(a, 0) = a

For hvert positivt helt tall aa er gcd(a,0)=a\gcd(a,0)=a.

Grunnen: hvert tall deler 00, siden 0=a00=a\cdot 0. Så divisorene i 00 er alle tall, og de felles divisorene i aa og 00 er nettopp divisorene i aa. Den største av dem er aa selv.

Dette er ikke en kuriositet — det er sluttsteget i Euklids algoritme. Når kjeden når rk1=qrk+0r_{k-1}=q\cdot r_k+0, er du i praksis kommet til paret (rk,0)(r_k,0), og nøkkellemmaet pluss dette kortet gir at svaret er rkr_k.

Merk at gcd(0,0)\gcd(0,0) ikke er definert: alle tall er felles divisorer, og det finnes ingen største.

Euklids algoritme på negative tall
Algoritmen er formulert for positive tall, men det er ingen begrensning: ta absoluttverdiene først.

Grunnen er at gcd\gcd ikke ser fortegn:
gcd(a,b)=gcd(a,b),\gcd(a,b)=\gcd(|a|,|b|),
siden dad\mid a nøyaktig når d(a)d\mid(-a).

Trenger du Bézout-koeffisienter for negative tall, regner du med absoluttverdiene og snur fortegnet på koeffisienten til slutt. Har du funnet gcd(803,154)=8035+154(26)\gcd(803,154)=803\cdot 5+154\cdot(-26), så er
gcd(803,154)=11=(803)(5)+154(26).\gcd(-803,154)=11=(-803)\cdot(-5)+154\cdot(-26).

Praktisk råd: gjør dette som første linje i besvarelsen, ikke underveis. «Siden gcd(a,b)=gcd(a,b)\gcd(a,b)=\gcd(|a|,|b|), regner vi med positive tall» — én setning, og du har fjernet en fortegnsfelle fra hele resten av oppgaven.

Løkke 3: Substitusjonskjeden baklengs

~12 minutter.

Nå kommer halvdelen som gir uttelling. Idéen er enkel: hver linje i divisjonskjeden kan løses for sin egen rest, og da har du resten uttrykt ved de to tallene over den. Gjør du det gjentatt, nedenfra og opp, ender du med gcd\gcd uttrykt ved de to opprinnelige tallene.

Dette er den ferdigheten flest studenter slurver med, og den som koster mest når den slurves.

Baklengs substitusjon
Prosedyren som skriver gcd(a,b)\gcd(a,b) som en lineærkombinasjon ax+byax+by, ved å nøste opp divisjonskjeden fra nedenfra.

Oppskriften:

1. Gå til den nest siste linja i kjeden — den der resten er gcd\gcd. Løs den for gcd\gcd:
gcd=rk2qkrk1.\gcd = r_{k-2}-q_k\cdot r_{k-1}.
2. Ta linja over, løs den for sin rest, og sett uttrykket inn.
3. Trekk sammen, men bare de to tallene som nå står der — ikke regn ut produktene.
4. Gjenta oppover til bare aa og bb står igjen.

Prosedyren må sitte utenat. Koeffisientene den produserer, gjør det ikke — de utledes på stedet, for hvert nytt tallpar.

Det ene rådet som forhindrer flest feil: ikke gang ut tallene. Står det 5335\cdot 33, la det stå som 5335\cdot 33 til slutt. Ganger du ut til 165165, mister du sporet av hvilket tall som skal substitueres neste gang, og da er kjeden ødelagt. Mange skriver derfor de to «aktive» tallene i en boks eller understreket for hver linje.

Substitusjonsregelen
Hvert steg baklengs bruker samme omskrivning. Divisjonslinja

A=qB+rA=q\cdot B+r

løses for resten:

r=AqB.r=A-q\cdot B.

Det er alt. Skrittet baklengs består i å bytte ut ett tall (resten rr) med to (dividenden AA og divisoren BB), og hver gang du gjør det, klatrer du én linje oppover i kjeden.

Bokføringen: etter hvert steg står gcd\gcd som en kombinasjon av nøyaktig to tall fra kjeden, og de to tallene ligger alltid ved siden av hverandre i kjeden. Er du i tvil om du har gjort det riktig, sjekk at du har to og ikke tre.

Kontrollen underveis (verdt de ti sekundene på et langt tallpar): regn ut uttrykket ditt numerisk etter hvert steg. Det skal alltid gi gcd\gcd. Får du noe annet, ligger feilen i det siste steget, og ikke tolv linjer tilbake.

Føringsmalen for Euklid — tre steg

Slik føres hver Euklid-oppgave i boka, og slik bør du føre den på eksamen. Malen er identisk i alle kapitler der Euklids algoritme brukes.

(i) Divisjonskjeden frem. Divisjonene linje for linje til rest 00, med siste ikke-null rest identifisert som gcd\gcd.

(ii) Substitusjonskjeden baklengs. Fra nest siste linje og oppover, eksplisitt, til gcd(a,b)=ax+by\gcd(a,b)=ax+by.

(iii) Konklusjonssetning. «Altså er gcd(a,b)=d=ax+by\gcd(a,b)=d=a\cdot x+b\cdot y» — skrevet ut som en setning, med tall.

Malen må sitte utenat, og hvert av de tre stegene bærer uttelling for seg selv. Grunnen er instruksen som står på hvert eneste sett: alle svar må begrunnes. Et riktig gcd\gcd uten kjeden er et sluttall uten metode, og koeffisienter uten kjeden er ikke etterprøvbare.

Legg til kontrollen. Sett koeffisientene inn i ax+byax+by og se at du får dd. Det tar tjue sekunder, og det er den eneste feilen i dette stoffet du kan oppdage helt sikkert selv.

✏️Hele malen på gcd(803, 154)

Finn gcd(803,154)\gcd(803,154), og skriv den på formen 803x+154y803x+154y.

(i) Divisjonskjeden frem. Vi deler gjentatt med rest, ved Euklids algoritme, til resten blir 00:

803=5154+33803 = 5\cdot 154 + 33
154=433+22154 = 4\cdot 33 + 22
33=122+1133 = 1\cdot 22 + 11
22=211+022 = 2\cdot 11 + 0

Den siste resten som ikke er 00, er 1111. Altså er gcd(803,154)=11\gcd(803,154)=11. Kjeden har 4 divisjonslinjer.

(ii) Substitusjonskjeden baklengs. Vi løser den nest siste linja for resten og substituerer oppover, linje for linje:

11=3312211 = 33 - 1\cdot 22
Sett inn 22=15443322 = 154 - 4\cdot 33:
11=1154+53311 = -1\cdot 154 + 5\cdot 33
Sett inn 33=803515433 = 803 - 5\cdot 154:
11=58032615411 = 5\cdot 803 - 26\cdot 154

(iii) Konklusjon. Altså er

gcd(803,154)=11=803(5)+154(26).\gcd(803,154) = 11 = 803\cdot(5) + 154\cdot(-26).

Kontroll ved innsetting: 803(5)+154(26)=40154004=11803\cdot(5) + 154\cdot(-26) = 4\,015 - 4\,004 = 11. Stemmer.

Se på steg (ii) én gang til, for det er der arbeidet ligger. Vi startet i linja 33=122+1133=1\cdot 22+11 — den nest siste — og løste den for 1111. Deretter erstattet vi 2222 med 154433154-4\cdot 33 fra linja over, og trakk sammen de to 3333-leddene: 133+433=5331\cdot 33+4\cdot 33=5\cdot 33. Til slutt erstattet vi 3333 med 8035154803-5\cdot 154.

Legg merke til at vi aldri ganget ut. Hadde vi skrevet 433=1324\cdot 33=132 underveis, ville 3333 forsvunnet fra uttrykket, og vi hadde ikke hatt noe å substituere i siste steg.

Sluttsvar: gcd(803,154)=11\gcd(803,154)=11, og 11=8035+154(26)11=803\cdot 5+154\cdot(-26).

📝Oppgave 3

Finn gcd(897,364)\gcd(897,364), og skriv den som en lineærkombinasjon 897x+364y897x+364y. Følg malen i tre steg, og kontroller svaret ved innsetting.

📝Oppgave 4

Finn gcd(1729,703)\gcd(1729,703) og skriv den på formen 1729x+703y1729x+703y.

Løkke 4: Bézouts identitet

~10 minutter.

Det vi nettopp gjorde med tall, er et teorem. Og teoremet sier noe mer enn prosedyren: det sier at gcd(a,b)\gcd(a,b) er det minste positive tallet som kan skrives som ax+byax+by. Den formuleringen er den vi bruker i bevis, og den er grunnen til at hele Del 1 hviler på dette.

📜Bézouts identitet
For alle hele tall aa og bb (ikke begge null) finnes det hele tall xx og yy slik at

gcd(a,b)=ax+by.\gcd(a,b)=ax+by.

Mer presist: gcd(a,b)\gcd(a,b) er det minste positive tallet som kan skrives som en lineærkombinasjon ax+byax+by, og hvert tall på den formen er et multiplum av gcd(a,b)\gcd(a,b).

Bevis for eksistensen. Euklids algoritme er beviset: substitusjonskjeden baklengs produserer xx og yy i endelig mange steg, for hvilket som helst par. Det er et konstruktivt bevis, og det er grunnen til at teoremet er praktisk og ikke bare sant.

Bevis for minimaliteten. La d=gcd(a,b)d=\gcd(a,b) og la m=ax+bym=ax+by være et vilkårlig positivt tall på den formen. Siden dad\mid a og dbd\mid b, gir lineærkombinasjonsregelen at dmd\mid m, altså mdm\ge d. Og dd selv er på formen, etter eksistensdelen. Dermed er dd den minste. \blacksquare

Teoremet må sitte utenat, og det må navngis. Fasitene i arkivet skriver «etter Bézout» der koeffisientene brukes.

Tre steder det bærer alt som kommer:

- Løsbarheten av ax+by=cax+by=c: likningen har heltallsløsninger nøyaktig når gcd(a,b)c\gcd(a,b)\mid c, fordi lineærkombinasjonene av aa og bb er nøyaktig multiplene av gcd(a,b)\gcd(a,b) (kap. 1.3).
- Modulær invers: aa har en invers modulo mm nøyaktig når gcd(a,m)=1\gcd(a,m)=1, for da gir Bézout ax+my=1ax+my=1, altså ax1(modm)ax\equiv 1\pmod m (kap. 1.4).
- Dekrypteringsnøkkelen i RSA er nettopp en slik invers (kap. 3.1).

Bézout-koeffisienter
Tallene xx og yy i gcd(a,b)=ax+by\gcd(a,b)=ax+by.

De utledes på stedet, alltid — de finnes ikke i noen tabell, og under kode D finnes det heller ikke noen tabell. Substitusjonskjeden er den ene måten du får dem.

De er ikke entydige. Har du funnet ett par, får du uendelig mange andre ved å flytte langs
x=x+bdt,y=yadt,tZ.x'=x+\frac{b}{d}t,\qquad y'=y-\frac{a}{d}t,\qquad t\in\mathbb{Z}.
Kontroll: ax+by=ax+by+abdtabdt=d\displaystyle ax'+by'=ax+by+\frac{ab}{d}t-\frac{ab}{d}t=d, som før.

Praktisk betydning for eksamen: fasiten din kan ha andre koeffisienter enn løsningsforslaget og fortsatt være riktig. Det som avgjør, er at innsettingen stemmer. Kontroller derfor alltid ved innsetting — da vet du at du er trygg selv om tallene ser annerledes ut enn du forventet.

Dette er også nøkkelen til hele løsningsmengden i kap. 1.3: parametriseringen over er den samme formelen som gir alle løsninger av en diofantisk likning.

Relativt primisk, sett gjennom Bézout
To tall aa og bb er relativt primiske nøyaktig når det finnes hele tall xx og yy med

ax+by=1.ax+by=1.

Begge retninger er korte. Er gcd(a,b)=1\gcd(a,b)=1, gir Bézout slike x,yx,y. Og finnes det slike x,yx,y, må gcd(a,b)\gcd(a,b) dele 11 etter lineærkombinasjonsregelen, altså være 11.

Dette er den mest brukte formen av Bézout på eksamen, og grunnen er praktisk: å vise at to tall er relativt primiske krever ellers at du utelukker alle felles primfaktorer. Med Bézout holder det å presentere én lineærkombinasjon som gir 11 — og det er en enkelt likning å skrive ned.

Dette er nøyaktig grepet i parameter-i-koeffisient-varianten i løkke 6, der tallene ikke er tall men uttrykk i en ukjent nn, og faktorisering derfor ikke er en mulighet i det hele tatt.

Fortegnsmønsteret i koeffisientene

I substitusjonskjeden veksler fortegnene systematisk, og det gir en kontroll som er verdt å kunne.

Regelen: når gcd(a,b)\gcd(a,b) er mindre enn både aa og bb, har de to koeffisientene motsatt fortegn. Den ene er positiv, den andre negativ.

Grunnen er en størrelsesbetraktning: skal ax+byax+by bli et lite positivt tall mens aa og bb er store, må de to leddene nesten kansellere hverandre. To positive ledd gir minst a+ba+b; to negative gir noe negativt.

Bruk den som kontroll. Får du to positive koeffisienter på et par der gcd\gcd er lite, har du regnet feil — sannsynligvis mistet et minustegn i en substitusjon.

Ser du på eksemplene i kapitlet, stemmer mønsteret hver gang: (5,26)(5,-26) for (803,154)(803,154), (13,32)(13,-32) for (897,364)(897,364), (13,32)(-13,32) for (1729,703)(1729,703), (13,30)(-13,30) for (2431,1054)(2431,1054).

✏️Bézout når tallene er relativt primiske

Vis at 779779 og 357357 er relativt primiske, og skriv 11 som en lineærkombinasjon av dem.

(i) Divisjonskjeden frem. Vi deler gjentatt med rest, ved Euklids algoritme, til resten blir 00:

779=2357+65779 = 2\cdot 357 + 65
357=565+32357 = 5\cdot 65 + 32
65=232+165 = 2\cdot 32 + 1
32=321+032 = 32\cdot 1 + 0

Den siste resten som ikke er 00, er 11. Altså er gcd(779,357)=1\gcd(779,357)=1. Kjeden har 4 divisjonslinjer.

(ii) Substitusjonskjeden baklengs. Vi løser den nest siste linja for resten og substituerer oppover, linje for linje:

1=652321 = 65 - 2\cdot 32
Sett inn 32=35756532 = 357 - 5\cdot 65:
1=2357+11651 = -2\cdot 357 + 11\cdot 65
Sett inn 65=779235765 = 779 - 2\cdot 357:
1=11779243571 = 11\cdot 779 - 24\cdot 357

(iii) Konklusjon. Altså er

gcd(779,357)=1=779(11)+357(24).\gcd(779,357) = 1 = 779\cdot(11) + 357\cdot(-24).

Kontroll ved innsetting: 779(11)+357(24)=85698568=1779\cdot(11) + 357\cdot(-24) = 8\,569 - 8\,568 = 1. Stemmer.

Siden gcd(779,357)=1\gcd(779,357)=1, er tallene relativt primiske.

Sluttsvar: gcd(779,357)=1\gcd(779,357)=1, og 1=77911+357(24)1=779\cdot 11+357\cdot(-24). Tallene er relativt primiske.

Legg merke til hva vi nettopp har gjort, for det er et grep du får bruk for i kap. 1.4. Likningen 1=77911+357(24)1=779\cdot 11+357\cdot(-24) kan leses modulo 357357: da forsvinner 357357-leddet, og vi står med
779111(mod357).779\cdot 11\equiv 1\pmod{357}.
Altså er 1111 inversen til 779779 modulo 357357. Baklengs-kjeden er hele metoden for å finne modulære inverser — det er samme regning, bare lest på en annen måte.

📝Oppgave 5
a) Finn gcd(851,247)\gcd(851,247) og skriv den som en lineærkombinasjon 851x+247y851x+247y.
b) Bruk svaret til å finne inversen til 247247 modulo 851851, altså et tall uu med 247u1(mod851)247u\equiv 1\pmod{851}. Oppgi uu i intervallet 0u<8510\le u<851.

Løkke 5: Den utvidede algoritmen i tabellform

~8 minutter.

Det finnes en alternativ bokføring som regner koeffisientene mens du går fremover, slik at du slipper baklengs-kjeden. Den er raskere når du har den i fingrene, og noen foretrekker den.

Men les advarselen først. Føringskravet i dette emnet er at Euklids algoritme vises frem og baklengs. Tabellformen er en alternativ føring du kan vise ved siden av — den er aldri en erstatning for substitusjonskjeden. Bruker du bare tabellen, har du oppgitt koeffisienter uten den utregningen fasitene forventer.

Den utvidede Euklids algoritme (tabellform)
En bokføring som regner Bézout-koeffisientene fremover, i samme sveip som divisjonene.

Oppsettet. Lag en tabell med kolonnene rr (rest), qq (kvotient), xx og yy. Start med to rader:

rrqqxxyy
aa1100
bb0011

Regelen for hver ny rad. Er qq kvotienten i den aktuelle divisjonen, regnes hver av de tre kolonnene med samme formel:
ny=to rader oppq(eˊn rad opp).\text{ny} = \text{to rader opp} - q\cdot(\text{én rad opp}).
Du stopper når rr-kolonnen blir 00. Raden over den inneholder gcd\gcd i rr-kolonnen, og de tilhørende Bézout-koeffisientene i xx- og yy-kolonnen.

Invarianten som gjør det riktig: i hver rad gjelder ax+by=rax+by=r. Det er en gratis kontroll — velg en rad, sett inn, og se at det stemmer.

Bruk: vis den gjerne som tillegg, eller bruk den til å kontrollere baklengs-kjeden din. Men før alltid substitusjonskjeden også — det er den som er føringsstandarden i dette emnet.

✏️Samme oppgave, alternativ føring

Regn ut gcd(803,154)\gcd(803,154) og Bézout-koeffisientene med den utvidede algoritmen i tabellform, og sammenlign med resultatet fra eksempel 2.

Vi kjenner divisjonskjeden fra eksempel 2, med kvotientene 55, 44, 11, 22.

rrqqxxyyKontroll: 803x+154y803x+154y
8038031100803803
1541540011154154
333355115-5803770=33803-770=33
2222444-421213212+3234=22-3212+3234=22
1111115526-2640154004=114015-4004=11
0022

Slik ble radene til. Hver rad er «to rader opp minus qq ganger én rad opp», anvendt på alle tre kolonnene:
- Rad 3 (q=5q=5): r=8035154=33r=803-5\cdot 154=33, x=150=1x=1-5\cdot 0=1, y=051=5y=0-5\cdot 1=-5.
- Rad 4 (q=4q=4): r=154433=22r=154-4\cdot 33=22, x=041=4x=0-4\cdot 1=-4, y=14(5)=21y=1-4\cdot(-5)=21.
- Rad 5 (q=1q=1): r=33122=11r=33-1\cdot 22=11, x=11(4)=5x=1-1\cdot(-4)=5, y=5121=26y=-5-1\cdot 21=-26.
Resten blir 00 i neste rad, så vi stopper. Siste rad med r0r\ne 0 gir
gcd(803,154)=11=8035+154(26).\gcd(803,154)=11=803\cdot 5+154\cdot(-26).
Dette er nøyaktig samme svar som i eksempel 2 — som det skal være. De to metodene er to bokføringer av samme regning.

Legg merke til kontrollkolonnen. Invarianten 803x+154y=r803x+154y=r holder i hver enkelt rad, så du kan stoppe hvor som helst og sjekke. Det er tabellformens store fordel: feilen oppdages i raden der den skjedde, ikke til slutt.

Og legg merke til den ulempen som gjør at boka likevel fører baklengs-kjeden som hovedmetode: tabellen gir koeffisientene uten å vise substitusjonene. Fasitene i dette emnet forventer substitusjonskjeden utskrevet.

Løkke 6: Når koeffisientene inneholder en ukjent

~10 minutter.

Her er varianten arkivet er glad i, og som gjør Bézout uunnværlig: koeffisientene er ikke tall, men uttrykk i en ukjent nn. Da kan du ikke faktorisere, du kan ikke kjøre Euklids algoritme på tall, og prøvedivisjon er meningsløs.

Det du kan, er å presentere 11 som en eksplisitt lineærkombinasjon. Én likning, og saken er avgjort for alle nn samtidig.

Parameter-i-koeffisient-varianten
Oppgavetypen: vis at to uttrykk i en ukjent nn er relativt primiske for alle hele tall nn.

Metoden: finn hele tall uu og vv (som ikke avhenger av nn) slik at
u(første uttrykk)+v(andre uttrykk)=1.u\cdot(\text{første uttrykk})+v\cdot(\text{andre uttrykk})=1.
Da er gcd=1\gcd=1 for alle nn, etter Bézout — eller mer direkte: enhver felles divisor deler venstresiden, altså deler den 11.

Slik finner du uu og vv: velg dem slik at nn-leddene kanselleres. Er uttrykkene an+ban+b og cn+dcn+d, skal ua+vc=0u\cdot a+v\cdot c=0, så u=cu=c og v=av=-a er det naturlige forsøket. Regn deretter ut hva konstantleddet blir, og skaler om det ikke ble ±1\pm 1.

Hvorfor dette er den eneste veien: her er tallene ikke tall. Det finnes ingenting å faktorisere og ingen divisjonskjede å kjøre. Bézout-formen er den ene karakteriseringen av «relativt primisk» som tåler en ukjent — og det er derfor kortet «Relativt primisk, sett gjennom Bézout» er verdt å ha sittende.

Fortegnet betyr ingenting. Ender du med 1-1 i stedet for 11, gang hele likningen med 1-1. En felles divisor som deler 1-1, deler også 11.

✏️Relativt primiske for alle n

La nn være et helt tall. Vis at 4n+34n+3 og 3n+23n+2 er relativt primiske for alle nn.

Strategien: vi finner en lineærkombinasjon som gir 11. Da er saken avgjort for alle nn samtidig, etter Bézout.

Steg 1: kanseller nn-leddene. Koeffisientene foran nn er 44 og 33. Ganger vi det første uttrykket med 33 og det andre med 44, får begge 12n12n, og differansen fjerner nn:
3(4n+3)4(3n+2)=(12n+9)(12n+8)=1.3(4n+3)-4(3n+2) = (12n+9)-(12n+8) = 1.

Steg 2: les av lineærkombinasjonen. Vi har altså, for hvert helt tall nn:
3(4n+3)+(4)(3n+2)=1.3\cdot(4n+3)+(-4)\cdot(3n+2)=1.

Steg 3: konkluder. La dd være en felles divisor i 4n+34n+3 og 3n+23n+2. Etter lineærkombinasjonsregelen deler dd da venstresiden, altså d1d\mid 1. Dermed er d=±1d=\pm 1, og
gcd(4n+3,3n+2)=1\gcd(4n+3,3n+2)=1
for alle hele tall nn. \blacksquare

Kontroll med to verdier. For n=5n=5: uttrykkene er 2323 og 1717, og 323417=6968=13\cdot 23-4\cdot 17=69-68=1. Riktig, og gcd(23,17)=1\gcd(23,17)=1. For n=11n=11: uttrykkene er 4747 og 3535, og 347435=141140=13\cdot 47-4\cdot 35=141-140=1. Riktig, og gcd(47,35)=1\gcd(47,35)=1 (siden 35=5735=5\cdot 7 og 4747 er et primtall).

Merk hvor lite arbeid dette var, og hvor mye det ga. Én likning dekket uendelig mange tallpar. Hadde vi forsøkt å faktorisere, ville vi ikke kommet i gang — 4n+34n+3 har ingen faktorisering før nn er valgt.

Sluttsvar: 3(4n+3)4(3n+2)=13(4n+3)-4(3n+2)=1 for alle nn, altså er uttrykkene relativt primiske for alle hele tall nn.

📝Oppgave 6

La nn være et helt tall.

a) Vis at 3n+13n+1 og 2n+12n+1 er relativt primiske for alle nn.
b) Kontroller resultatet for n=7n=7 og n=12n=12.

Eksamensnivå: hele malen på et typisk oppgave-1-tallpar

~5 minutter.

Til slutt ett eksempel av samme størrelse og form som du møter på eksamen, ført som en A-besvarelse fra første til siste linje. Legg merke til at det ikke er noe nytt fagstoff her — bare malen, kjørt uten snarveier.

✏️Eksamensnivå: gcd(2431, 1054) med Bézout

Bruk Euklids algoritme til å finne gcd(2431,1054)\gcd(2431,1054), og skriv den på formen 2431x+1054y2431x+1054y.

(i) Divisjonskjeden frem. Vi deler gjentatt med rest, ved Euklids algoritme, til resten blir 00:

2431=21054+3232\,431 = 2\cdot 1\,054 + 323
1054=3323+851\,054 = 3\cdot 323 + 85
323=385+68323 = 3\cdot 85 + 68
85=168+1785 = 1\cdot 68 + 17
68=417+068 = 4\cdot 17 + 0

Den siste resten som ikke er 00, er 1717. Altså er gcd(2431,1054)=17\gcd(2\,431,1\,054)=17. Kjeden har 5 divisjonslinjer.

(ii) Substitusjonskjeden baklengs. Vi løser den nest siste linja for resten og substituerer oppover, linje for linje:

17=8516817 = 85 - 1\cdot 68
Sett inn 68=32338568 = 323 - 3\cdot 85:
17=1323+48517 = -1\cdot 323 + 4\cdot 85
Sett inn 85=1054332385 = 1\,054 - 3\cdot 323:
17=410541332317 = 4\cdot 1\,054 - 13\cdot 323
Sett inn 323=243121054323 = 2\,431 - 2\cdot 1\,054:
17=132431+30105417 = -13\cdot 2\,431 + 30\cdot 1\,054

(iii) Konklusjon. Altså er

gcd(2431,1054)=17=2431(13)+1054(30).\gcd(2\,431,1\,054) = 17 = 2\,431\cdot(-13) + 1\,054\cdot(30).

Kontroll ved innsetting: 2431(13)+1054(30)=31603+31620=172\,431\cdot(-13) + 1\,054\cdot(30) = -31\,603 + 31\,620 = 17. Stemmer.

Sluttsvar: gcd(2431,1054)=17\gcd(2431,1054)=17, og 17=2431(13)+10543017=2431\cdot(-13)+1054\cdot 30.

Hvor føringspoengene sitter i denne besvarelsen:

- Divisjonskjeden er skrevet ut linje for linje (steg i). Et gcd\gcd oppgitt uten kjeden er et sluttall uten metode.
- Siste ikke-null rest er identifisert eksplisitt som gcd\gcd — ikke bare underforstått.
- Substitusjonskjeden er skrevet ut, steg for steg (steg ii), med hvert innsettingssteg vist. Dette er den delen som slurves oftest, og den som bærer resten av en diofant- eller invers-oppgave.
- Konklusjonssetningen står der (steg iii), med tall, som en setning.
- Kontrollen ved innsetting er utført. Den koster tjue sekunder og fanger den ene feiltypen du ellers ikke oppdager.

Tallene her er realistiske for kode D: fem divisjonslinjer, alle divisjoner gjørbare med enkel kalkulator. Merk også at 2431=1113172431=11\cdot 13\cdot 17 og 1054=217311054=2\cdot 17\cdot 31 — faktoriseringsveien ville krevd at du fant disse fem primtallene ved prøvedivisjon. Euklids algoritme brukte fem divisjoner.

📝Oppgave 7
Finn gcd(1666,646)\gcd(1666,646) og skriv den på formen 1666x+646y1666x+646y. Bruk deretter Bézout-koeffisientene til å avgjøre om det finnes hele tall x,yx,y med

1666x+646y=51.1666x+646y=51.

Begrunn svaret uten å løse likningen.

Begrepsbank

Dette er flashcard-stoff — hopp trygt over ved førstegangslesing; tidsanslaget på 60 minutter gjelder kjernestoffet over.

For dette kapitlet gjelder noe spesielt: det viktigste kortet er ikke et faktum, men en prosedyre. Og prosedyrer pugges ved å kjøres. Les kortene, men avsett halvparten av repetisjonstiden til å regne nye tallpar med boka lukket — det er den delen som virker.

Restfølgen og notasjonen for den
Standardnotasjonen for tallene Euklids algoritme produserer: r1,r2,r3,r_1,r_2,r_3,\dots for restene, og q1,q2,q_1,q_2,\dots for kvotientene, med r0=br_0=b og r1=ar_{-1}=a når man vil ha en enhetlig indeksering.

Med denne notasjonen er kjeden
rk1=qk+1rk+rk+1,r_{k-1}=q_{k+1}r_k+r_{k+1},
og algoritmen stopper når rk+1=0r_{k+1}=0, med gcd=rk\gcd=r_k.

Hvorfor notasjonen er verdt å kjenne: den brukes i kjedebrøk-kapitlet (kap. 7.1), der de samme kvotientene q1,q2,q_1,q_2,\dots viser seg å være nøyaktig leddene i kjedebrøkutviklingen. Euklids algoritme og kjedebrøk er samme regning sett på to måter.

I praktisk føring på eksamen trenger du ikke indeksene — skriv tallene. Notasjonen er for teoriens skyld.

Mengden av lineærkombinasjoner
For faste aa og bb: mengden av alle tall på formen ax+byax+by, der xx og yy løper over de hele tallene, er nøyaktig mengden av multipler av gcd(a,b)\gcd(a,b):

{ax+by:x,yZ}={kgcd(a,b):kZ}.\{ax+by: x,y\in\mathbb{Z}\}=\{k\cdot\gcd(a,b): k\in\mathbb{Z}\}.

Begge inklusjoner er korte. Hver lineærkombinasjon er delelig med gcd(a,b)\gcd(a,b), etter lineærkombinasjonsregelen. Og hvert multiplum kgcd(a,b)k\cdot\gcd(a,b) nås ved å skalere Bézout-likningen med kk.

Dette er den setningen som gir løsbarhetskriteriet i kap. 1.3: likningen ax+by=cax+by=c har heltallsløsninger nøyaktig når cc ligger i denne mengden, altså når gcd(a,b)c\gcd(a,b)\mid c. Hele sjanger A hviler på denne ene observasjonen.

Euklid eller faktorisering — når hva

Begge metodene finner gcd\gcd. Valget mellom dem er praktisk, og under kode D er det avgjort.

FaktoriseringEuklids algoritme
Kreverat du kan faktorisere begge tallbare divisjon med rest
Arbeid for firesifrede tallprøvedivisjon opp til n\sqrt n, to ganger4–6 divisjoner
Gir Bézout-koeffisienterneija, ved baklengs substitusjon
Virker på uttrykk med ukjentneinei — men Bézout-formen gjør

Konklusjonen for eksamen: bruk Euklids algoritme. Faktoriseringsveien er nyttig til forståelse og til små tall, men oppgavene i sjanger A og B har tall der prøvedivisjon tar for lang tid — og den gir deg ikke koeffisientene, som er det du faktisk trenger videre.
Faktoriseringen har likevel én rolle å beholde: som kontroll. Har du fått gcd(1440,693)=9\gcd(1440,693)=9, er det raskt å se at 914409\mid 1440 og 96939\mid 693.

Kontroll ved innsetting
Den ene kontrollen som avgjør om Bézout-arbeidet ditt er riktig: sett koeffisientene inn og regn ut.

ax+by =? gcd(a,b).ax+by\ \overset{?}{=}\ \gcd(a,b).

Gjør dette hver gang. Det tar tjue sekunder, det krever ingen ny innsikt, og det fanger nøyaktig den feiltypen du ellers ikke oppdager — et mistet fortegn eller en gal sammentrekning midt i substitusjonskjeden.

To ting til å kontrollere samtidig, som er like billige:

- Deler gcd\gcd-en din begge de opprinnelige tallene? Hvis ikke, ligger feilen i divisjonskjeden, ikke i substitusjonene.
- Har koeffisientene motsatt fortegn? Når gcd\gcd er lite i forhold til aa og bb, skal de ha det.

Under kode D er selvkontroll den eneste kontrollen du har. Det er ikke noe å slå opp i og ingen fasit å sammenligne med — så kontrollrutinene er en del av ferdigheten, ikke et tillegg til den.

Fra Bézout til modulær invers
Grepet som gjør baklengs-kjeden til metoden for modulære inverser.

Har du gcd(a,m)=1\gcd(a,m)=1 og Bézout-likningen

ax+my=1,ax+my=1,

les den modulo mm. Leddet mymy er et multiplum av mm og forsvinner:

ax1(modm).ax\equiv 1\pmod m.

Altså er xx inversen til aa modulo mm. Ligger xx utenfor 0x<m0\le x<m, legg til eller trekk fra mm til den er inne — det endrer ikke restklassen.

Dette er hele metoden, og det er derfor kapitlet er en forutsetning for kap. 1.4 og for RSA i kap. 3.1. Legg merke til at kravet er gcd(a,m)=1\gcd(a,m)=1 og ingenting mer: modulusen behøver ikke være et primtall.

Vi bruker grepet i eksempel 3 og i oppgave 4.

Hvorfor gcd alene ikke er nok

Et føringskort, ikke et fagkort — men det er verdt en plass i bunken, fordi det er den dyreste vanen å ikke ha.

Regelen: når en oppgave nevner Euklids algoritme, forventes både gcd\gcd og veien dit, frem og baklengs. Grunnlaget er instruksen på hvert sett — alle svar må begrunnes — sammen med fasitpraksisen i arkivet, som konsekvent skriver ut begge kjedene.

To grunner til at det ikke er formalisme:

1. Uttelling. Et gcd\gcd uten kjede er et sluttall uten metode, og teller lite. Motsatt: en riktig ført kjede med en regnefeil i siste linje gir betydelig uttelling.
2. Fremdrift. Koeffisientene er det du trenger videre — til løsningsmengden i kap. 1.3, til inversen i kap. 1.4, til dd i RSA. Har du dem ikke, stopper oppgaven.

Selvtesten: kan noen som leser besvarelsen din, følge hvert steg fra de to opprinnelige tallene til gcd=ax+by\gcd=ax+by uten å regne selv? Da er føringen god nok.

Rekkefølgen på a og b
Algoritmen er beskrevet med a>ba>b, men du behøver ikke sortere først.

Starter du med det minste tallet øverst, ordner første linje det selv. Deler du 154154803803, får du
154=0803+154,154=0\cdot 803+154,
altså kvotient 00 og resten uendret. Neste linje deler da 803803154154 — og du er i gang som normalt, bare med én tom linje ekstra.

Praktisk råd likevel: sorter. Det koster ingenting, og den tomme linja er en unødvendig kilde til forvirring når du senere skal gå baklengs gjennom kjeden. Skriv det største tallet først, hver gang.

Merk også at gcd\gcd er symmetrisk: gcd(a,b)=gcd(b,a)\gcd(a,b)=\gcd(b,a). Rekkefølgen påvirker altså bare bokføringen, aldri svaret. Bézout-koeffisientene bytter naturligvis plass med tallene sine.

Differansevarianten
En variant av nøkkellemmaet som bruker subtraksjon i stedet for divisjon:

gcd(a,b)=gcd(ab,b).\gcd(a,b)=\gcd(a-b,b).

Beviset er det samme argumentet som for nøkkellemmaet: aba-b er en lineærkombinasjon av aa og bb, og a=(ab)+ba=(a-b)+b er en lineærkombinasjon av aba-b og bb, så de to parene har nøyaktig samme felles divisorer.

Faktisk er dette spesialtilfellet q=1q=1 av nøkkellemmaet — og divisjonsvarianten er bare «trekk fra bb så mange ganger du kan, på én gang».

Når den er nyttig: som argument i bevis, der en enkelt subtraksjon er lettere å skrive enn en divisjon. Vi brukte den formen i kap. 1.1, oppgave 5.

Når den ikke er nyttig: til regning. gcd(1000,3)\gcd(1000,3) ville tatt over 300 subtraksjoner og tar to divisjoner. På eksamen bruker du alltid divisjonsvarianten.

Bézout for tre eller flere tall
Både gcd\gcd og Bézout utvider seg til flere tall, og metoden er å ta dem to av gangen:

gcd(a,b,c)=gcd ⁣(gcd(a,b),c).\gcd(a,b,c)=\gcd\!\left(\gcd(a,b),\,c\right).

Bézout-formen blir tilsvarende: det finnes hele tall x,y,zx,y,z med
gcd(a,b,c)=ax+by+cz.\gcd(a,b,c)=ax+by+cz.

Slik regner du den ut i praksis, i to runder:

1. Kjør Euklids algoritme på aa og bb: gcd(a,b)=au+bv\gcd(a,b)=au+bv.
2. Kjør den så på gcd(a,b)\gcd(a,b) og cc: gcd(a,b,c)=gcd(a,b)s+ct\gcd(a,b,c)=\gcd(a,b)\cdot s+c\cdot t.
3. Sett inn uttrykket fra runde 1: gcd(a,b,c)=a(us)+b(vs)+ct\gcd(a,b,c)=a(us)+b(vs)+ct.

Merk fellen: at tre tall har gcd=1\gcd=1 betyr ikke at de er parvis relativt primiske. gcd(6,10,15)=1\gcd(6,10,15)=1, men ingen av de tre parene er relativt primiske. Skillet er avgjørende i det kinesiske restteoremet (kap. 2.4), som krever den parvise egenskapen.

Verste tilfelle: Fibonacci-tallene
Hvilke tallpar tvinger Euklids algoritme til flest divisjoner? Svaret er nabotall i Fibonacci-følgen 1,1,2,3,5,8,13,21,34,55,1,1,2,3,5,8,13,21,34,55,\dots

Kjører du algoritmen på gcd(55,34)\gcd(55,34), blir hver kvotient 11, og kjeden blir så lang som den kan bli:
55=134+21,34=121+13,21=113+8,55=1\cdot 34+21,\quad 34=1\cdot 21+13,\quad 21=1\cdot 13+8,\quad\dots
Hver linje flytter deg bare ett hakk nedover i følgen, i stedet for å hoppe.

Konsekvensen er en øvre grense: antall divisjonslinjer vokser bare som logaritmen av tallene. Det er derfor algoritmen er praktisk på store tall, og det er derfor firesifrede tall gir 4–6 linjer — som er nøyaktig hva du møter på eksamen.

Bruk det som kontroll: blir kjeden din uventet lang, og alle kvotientene er 11, er tallene Fibonacci-lignende. Blir den lang med varierende kvotienter, har du sannsynligvis regnet feil.

Fibonacci-tallene dukker opp igjen i kap. 6.2, der identiteter om dem bevises ved induksjon (sjanger J), og i kap. 7.1, der de er konvergent-nevnerne til den enkleste kjedebrøken.

Repetisjonsoppgaver
Symbol- og formelliste

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.

Skolesaga er en uavhengig læringsressurs og er ikke tilknyttet eller godkjent av Norges teknisk-naturvitenskapelige universitet. Dette er ikke offisielt studiemateriell. Les mer.