06.05.2010, 11:46 |
Hellboy256 |
Auf diesen Beitrag antworten » |
Binärer erweiterter euklidischer Algorithmus
Also zu berechnen ist
693u + 609v = ggT(693,609)
a = 693
b= 609
g:= ggT(a,b)
anhand des binären erweiterten euklidischen Algorithmus
Hier mal der Algo:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
|
1. Setze e=0
2. Solange a und b gerade sind , wiederhole:
Setze a=a/2, b=b/2 und e=e+1
3. Setze A = (a,1,0) und B= (b,0,1)
4. Solange A1 gerade ist, wiederhole:
Setze A1=A1/2
Falls A2 und A3 gerade sind,
setze A2=A2/2 und A3=A3/2,
ansonsten falls A2>0 ist,
setze A2=(A2-b)/2 und A3=(A3+a)/2,
ansonsten
setze A2 =(A2+b)/2 und A3=(A3-a)/2.
5. Solange B1 gerade ist, wiederhole:
Setze B1 = B1/2
Wenn B2 und B3 gerade sind,
setze B2=B2/2 und B3=B3/2,
ansonsten falls B2>0 ist,
setze B2=(B2-b)/2 und B3=(B3+a)/2,
ansonsten
setze B2 = (B2+b)/2 und B3 = (B3-a)/2
6. Falls A1>B1, setze A=A-B und gehe zu Schritt 4
7. Falls A1<B1 setze B=B-A und gehe zu Schritt 5
8. Setze g=B1*2^e, u=B2 und v=B3
|
|
Nur komm ich da jetzt auf ein falsches Ergebnis:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
|
1. e=0
2. -
3. A=(693, 1, 0) B= (609, 0,1)
4. -
5. -
6. A=(84,1,-1) => 4
4. A1= 42
A2=-304 //Für das a und b hab ich jetzt jeweils die neuen Werte A1 bzw. B1 genommen
A3=20
4. A1=21
A2=-152
A3=10
Somit das neue A=(21, -152, 10)
7. B=(588, 152, -9)
5. B1=294
B2=-71
B3=6
5. B1=147
B2= 38
B3=-7
7. B=(126, 190, -17)
5. B1=63
B2=63
B3=2
7. B=(42, 215, -8)
5. B1= 21
B2=97
B3=6
|
|
Nur stimmen diese Werte nicht wo hab ich hier was falsch gemacht? |
RE: Binärer erweiterter euklidischer Algorithmus
Zitat: |
Original von Hellboy256
Nur komm ich da jetzt auf ein falsches Ergebnis:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
|
1. e=0
2. -
3. A=(693, 1, 0) B= (609, 0,1)
4. -
5. -
6. A=(84,1,-1) => 4
4. A1= 42
A2=-304 //Für das a und b hab ich jetzt jeweils die neuen Werte A1 bzw. B1 genommen
A3=20
4. A1=21
A2=-152
A3=10
Somit das neue A=(21, -152, 10)
7. B=(588, 152, -9)
5. B1=294
B2=-71
B3=6
5. B1=147
B2= 38
B3=-7
7. B=(126, 190, -17)
5. B1=63
B2=63
B3=2
7. B=(42, 215, -8)
5. B1= 21
B2=97
B3=6
|
|
Nur stimmen diese Werte nicht wo hab ich hier was falsch gemacht? |
Der erste Fehler ist schon in Zeile 9, wobei der richtige Wert A3 =346 ist...
Grund: Was du in Zeile 8 als Bemerkung schreibst, ist glatt falsch, hier muss das Original a und b genommen werden...Offenbar hast du den ganzen Algorithmus, der wirklich saugeil ist, nicht verstanden...
|