Euklids algoritme

Euklids algoritme er en fremgangsmåte for å beregne på en systematisk måte den største felles divisor til to elementer som tilhører en euklidsk ring.  I det enkleste tilfelle benyttes den for heltall. Algoritmen er en av de eldste som er kjent og har fått sitt navn etter den greske matematiker Euklid. Han beskrev den i sitt hovedverk Elementer som kan dateres tilbake til antikkens Hellas. Den samme fremgangsmåten kan også benyttes til å forenkle generelle brøker og har mange anvendelser i moderne tallteori.

Bakgrunn

Fremgangsmåten som beskrives i algoritmen var sannsynligvis godt kjent på Euklids tid  tog ble omtalt som antanairesis. Sannsynligvis stammer metoden helt tilbake til babylonerne. Den fremkommer på en naturlig måte når man skal måle nøyaktig en avstand med en målestav med kjent lengde, men uten noen finere inndeling. Men man kan merke av kortere lengder på denne.

Hvis den søkte avstanden kalles a og målestaven har lengde b, kan man si at denne utgjør den lengdeenhet man vil benytte. Man ønsker derfor å måle a i enheter av b, det vil si forholdet a/b. Dette tilsvarer da en divisjon, og man vil generelt ikke finne noe noe heltallig svar.

Fremgangsmåte

Først måler man hvor mange hele ganger q0 som b kan plasseres langs a. Generelt vil det da oppstå en rest r0 < b. Når denne er forskjellig fra null, sier man at målingen eller divisjonen ikke «går opp» og man har

 

I neste omgang bestemmer man hvor mange ganger q1 avstanden r0 er inneholdt i b. Det vil eventuelt gi en ny rest r1,  og man har

 

hvor nå  r1 < r0. På denne måten fortsetter man og måler hvor mange ganger r1 er inneholdt i r0,

 

Generelt vil man etter å ha gjentatt dette n ganger at

 

Denne fremgangsmåten kan fortsette helt til restene er blitt forsvinnende små, og man er fornøydd med resultatet. Det kan da generelt skrives som en kjedebrøk. Stopper man for eksempel etter n = 2 ganger der man kan sette , vil man ha at . Innsatt i den forrige ligningen, har man da . Herav kan så r0 bestemmes uttrykt ved lengden b. Resultatet er da kjedebrøken  som utskrevet er

 

I prinsippet gir denne fremgangsmåten et resultat som kan bli så nøyaktig som man ønsker ved å foreta disse gjentagelsene lenge nok.

Største felles faktor

Den samme algoritmen kan også bli benyttet til å finne største felles faktor av to tall a og b. Hvis man etter n stepp finner at resten rn+1 = 0, vil denne felles faktor være den foregående resten rn. De to tallene sies da å være kommensurable.

Som et konkret eksempel kan man betrakte tallene a = 551551 og b = 50065. Da får man videre fra algoritmen

 

Største felles faktor for 551551 og 50065 er derfor 19.

Dataprogram

Algoritmen til Euklid er rekursiv og kan derfor lett implementeres på en elektronisk datamaskin. Man kan da definere en funksjon SFD(a,b) som gir største felles divisor av de to heltallene a og b. Strukturen til programmet vil da være

 funksjon SFD(a, b)
      hvis b = 0 returner a
      ellers returner SFD(b, a mod b)

Her benyttes den innebygde modulo-funksjonen mod som gir resten etter en heltallsdivisjon.

I  programmeringsspråkene C++ eller  Java vil algoritmen se ut som

  int SFD(int a,int b){
    if ( b == 0 )
      return a;
    return SFD(b,a%b);
  }

hvor modulo-funksjonen betegnes med prosentsymbolet %.

Faktorisering av polynom

Polynom kan adderes og multipliseres sammen. De kan på den måten danne en matematisk ring med tilsvarende egenskaper som heltallene Z. Av den grunn kan et polynom ofte faktoriseres i et produkt av et eller flere andre polynom av lavere grad. Denne faktorisering kan også systematisk utføres ved hjelp av Euklids algoritme.

Hvis man er gitt ett polynom a(x) og et annet b(x) av samme eller lavere grad, kan man alltid foreta en oppsplitting av formen

 

hvor de to polynomene q(x) og r(x)  entydig kan bestemmes. Polynomet b(x) kan så splittes opp på en tilsvarende måte og dermed gi opphav til et nytt restpolynom r(x) . Denne prosessen fortsettes så til man står igjen med et restpolynom som er null. Den største felles faktor av polynomene a(x) og b(x) er da det foregående restpolynomet.

Fremgangsmåten kan illustreres ved et enkelt eksempel der 

 

Da er

  ,

slik at den felles faktor er . Polynomet  a(x) kan derfor splittes opp og man finner

 

Det er først når de gitte polynomene har mye høyere grad, at denne algoritmen virkelig kommer til sin fulle bruk.

Se også

 Kjedebrøk
 Største felles faktor

Referanser

Eksterne lenker

 J. O'Connor and E. Robertson, Division and Euclidean algorithms, University of St. Andrews, Scotland

Algoritmer
Tallteori