38岁 已婚女 年收入:21-30万 测试了保险需求
I talteori er euklidsk algoritme ein algoritme for ? berekne st?rste felles divisor (SFD) til to element i kva for ein som helst euklidsk ring (til d?mes to heiltal). Hovudtydinga til algoritmen er at han ikkje treng faktorisering av dei to heiltala, og at han er ein av dei eldste kjende algoritmane som kan daterast tilbake til Hellas i antikken.
Bakgrunn
[endre | endre wikiteksten]Euklidsk algoritme er ein av dei eldste kjende algoritmane, sidan han st?r skildra i Elementa av Euklid fr? rundt 300 fvt. (7. bok, proposition 2). Euklid formulerte opphavleg problemet geometrisk, som problemet med ? finne det st?rste ?m?let? for to linjelengder (ei linje som kunne brukast til ? m?le begge linjer utan nokon rest), og algoritmen hans skreid fram ved gjentekne substraksjonar av det kortaste fr? det lengste linjestykket. Algoritmen vart end? truleg oppdaga av Euklid og dermed kjent opp til 200 ?r tidlegare.
Han var nesten sikkert kjent av Eudoksos fr? Knidos (omkring 375 fvt.), og Aristoteles (omkring 330 fvt.) indikert han i hans Topics, 158b, 29–35.
Skildring av algoritmen
[endre | endre wikiteksten]Gjeve to heiltal, a og b, finn st?rste heiltala d slik at d deler a og b. Viss b = 0, returner a. Elles blir prosessen gjenteke med tala b og a modulo b. Det er òg mogleg ? bruke gjenteke subtraksjon, der det minste talet trekkjast fr? det st?rste, heilt til éit av tala er 0. Dette er den opphavlege algoritmen, men han er mindre effektiv.
Implementering
[endre | endre wikiteksten]Nytte av rekursjon
[endre | endre wikiteksten]Ved bruk av rekursjon, kan algoritmen uttrykkjast som:
funksjon SFD(a, b) viss b = 0 returner a ellers returner SFD(b, a mod b)
I blant anna C++ og Java ser algoritmen slik ut:
int SFD(int a,int b){ if ( b == 0 ) return a; return SFD(b,a%b); }
Bruk av iterasjon
[endre | endre wikiteksten]Ein effektiv iterativ metode for kompilatorar som ikkje optimiserar halerekursjon:
funksjon SFD(a, b) s? lenge b ≠ 0 t := b b := a mod b a := t returner a
D?me
[endre | endre wikiteksten]Finn st?rste felles faktor til 42 og 24.
a = 42, b = 24
a = 24, b = (42 mod 24) = 18
a = 18, b = (24 mod 18) = 6
a = 6, b = (18 mod 6) = 0
b = 0, s? svaret er a = 6
Kjelder
[endre | endre wikiteksten]- Denne artikkelen bygger p? ?Euklids algoritme? fr? Wikipedia p? bokm?l, den 16. september 2011.