Autor Beitrag
solic
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 07.02.07 16:35 
Mahlzeit,
Ich versuche gerade den erweiterte euklidischen Algorithmus in Delphi zu übersetzen: siehe Datei 1
das ganze soll dann später so funktionieren wie es im unteren Teil von Datei 1 zusehen ist.
Aber wenn ich mein Programm laufen lassen wird mir nur : 0,1,7 ausgeben :(
Hier das Code:
ausblenden volle Höhe Delphi-Quelltext
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:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
var
  Form1: TForm1;
  u1,u2,u3,v1,v2,v3,t1,t2,t3,q,a,b:integer;

implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
begin

a:=StrToInt(edit1.text);
b:=StrToInt(edit2.text);
u1:=1    ;
u2:=0    ;
u3:=a    ;

v1:=0    ;
v2:=1    ;
v3:=b    ;

while v3 <> 0 do
begin

q:= u3 DIV v3;

t1:=u1-q*v1   ;
t2:=u2-q*v2   ;
t2:=u3-q*v3   ;

u1:=v1        ;
u2:=v2        ;
u3:=v3        ;

v1:=t1        ;
v2:=t2        ;
v3:=t3        ;
ListBox1.Items.Add(IntToStr(u1));
ListBox1.Items.Add(IntToStr(u2));
ListBox1.Items.Add(IntToStr(u3));

end;
end;

end.
Einloggen, um Attachments anzusehen!
Dragonclaw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 196

Windows Vista
Delphi 7 Prof.
BeitragVerfasst: Mi 07.02.07 17:47 
Hallo,

Ich finde rekursiv geht das VIEL einfacher. Steht sogar schon in Pseudo Code auf wiki

ausblenden Quelltext
1:
2:
3:
4:
EUCLID(a,b)
1  wenn b = 0
2      dann return a
3      sonst return EUCLID(b, a mod b)


In Delphi sieht das dann so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
function TForm1.EUCLID(a, b: Integer): Integer;
begin
  if b = 0
    then result := a
      else result := EUCLID(b,a mod b);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Listbox1.Items.Add(IntToSTr(
                              EUCLID(
                                     StrToInt(Edit1.text),
                                     StrToInt(Edit2.text)
                                     )));
end;


Oder meinst du die Kettenbruch Zerlegung?
solic Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 07.02.07 18:19 
erstmal danke für deine antwort ! ich muss ein programm für die rsa verschlüsselung schreiben..
auf jeden fall sollte das eigentlich am ende so aussehen :
www.matheprisma.uni-..._Bilder/eukAlg12.gif
denn dieses u2 braucht man bei der verschlüsselung und ich glaub das geht mit deinem weg nicht oder ? das ist sowieso alles ziemlich wild muss ich sagen :p aber naja .. kannst dir ja mal den link angucken dann ist das glaub ich etwas anschaulicher!

Hier ist nochmal die beschreibung zur berechnung von d (vielleicht kann man das ja viel einfacher machen & ich hab bis jetzt nur den schweren weg gefunden):
www.matheprisma.uni-...ertal.de/Module/RSA/