Euklides algoritm

Från testwiki
Version från den 23 juni 2024 kl. 21.02 av imported>Plumbot (Externa länkar: Lägger till * före mall-anrop)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

Euklides algoritm är en algoritm för att bestämma största gemensamma delare till två heltal[1]. Det är en av de äldsta kända algoritmerna och beskrivs i Euklides Elementa.[2] Algoritmen kräver inte att man kan dela upp talen i faktorer.

Algoritmen kan beskrivas på följande sätt:[1]

  1. Två heltal a och b, där a > b är givna.
  2. Om b = 0 är algoritmen klar och svaret är a.
  3. I annat fall beräknas c, resten när man delat a med b.
  4. sätt a = b, b = c och börja om från steg 2 igen, (a får det värde b har och b får det värde c har).

Exempel 1

Finn den största gemensamma delaren till 1071 och 1029.

stegabckommentar1,210711029310711029421071=11029+424,2102942b03102942211029=2442+214,24221b034221042=2214,2210b=0

Den största gemensamma delaren är alltså 21.

Kortare skrivet:

1071 = 1 · 1029 + 42
1029 = 24 · 42 + 21
42 = 2 · 21 + 0, så svaret är 21.

En snabb kontroll bekräftar att 1071 = 51 · 21 och 1029 = 49 · 21.

En följd av Euklides algoritm är Bézouts identitet, som säger att den största gemensamma delaren till två tal a,b kan skrivas som en linjärkombination av talen ax+by (x,y heltal). Genom att lösa ut resterna och köra algoritmen baklänges bestämmer man x och y. I exemplet ovan:

21=10292442
42=107111029
21=10292442=102924(107111029)=102925107124

Detta kan användas vid lösning av den diofantiska ekvationen ax + by = c.

Exempel 2

Nedan följer en alternativ metod som fungerar lika bra som ovan. Med funktionen frac menas decimaldelen av talet. Om x=1.5 så är frac(x)=0.5 och om x, så är decimaldelen noll, det vill säga frac(x)=0.

a=1071
b=1029
c=1029frac(10711029)=42
a=b=1029
b=c=42
c=42frac(102942)=21
a=b=42
b=c=21
c=21frac(4221)=0
a=b=21
b=c=0

Bevis för Euklides algoritm

Euklides använde sig av ett så kallat motsägelsebevis. Han utgick från att det finns ett tal c som delar b och r, men inte a. Och att divisionen ab blir a=bq+r

 c|b
 c|r
 c|bq
 c|bq+r

Då måste alltså alla tal som delar r och b dela a

 c|a

sgd(a, b)=sgd(b, r)

Generalisering av Euklides algoritm

Euklides algoritm kan utvidgas till att operera på andra ringar än heltalen, som ovan. Ringar i vilka Euklides algoritm kan användas kallas Euklidiska ringar. Exempel på Euklidiska ringar är de Gaussiska heltalen och vissa polynomringar.

Referenser

  1. 1,0 1,1 Mall:Webbref
  2. För rationella tal i bok VII, för reella tal i bok X. Se Mall:MathWorld

Externa länkar