Binärer erweiterter euklidischer Algorithmus

Neue Frage »

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?
Mystic Auf diesen Beitrag antworten »
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... unglücklich
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »