Hi
ich muss für meine Facharbeit RSA nachprogrammieren und will deswegen erstmal Primzahlen aus dem Intervall 1 bis 100 ermitteln (ich weiß ist wenig aber soll nur verdeutlichen)
hab mal in meinen alten klausuren gestöbert und gefunden wie das geht. Theoretisch
Also erstmal in der Theorie:
Das Verfahren nennt sich das Sieb des Eratosthenes oder so
Ich hab die zahlen von 1 bis 100.
Die 1 wird gestrichen weil sie keine Primzahl ist.
Nun werden der Reihe nach beginnend mit 2 alle VIelfachen dieser Zahl gestrichen also 4;6;8;10 (als vielfaches von 2)...
9;15;21;27; als vielfaches von 3
5;25;35;55 als vielfaches von 5 usw
Das ganze wird bist zur zahl Wurzel(n) gemacht also in meinem fall 10
Habs jetzt mal etwas allgemeiner Programmiert und noch nicht berücksichtigt, dass man die vielfache von 4 6 9 und 10 nicht beachten muss.
Geht aber nicht
Irgendwie hab ich n denkfehler drin aber dafür seid ihr ja da

und zwar streich ich sowohl die 2 die 3, die 5 und die 7 mit!. Jetzt seid ihr dran
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:
| procedure TForm1.FormCreate(Sender: TObject); var index:integer; begin For index := 1 To 100 Do intervall[index] := index; intervall[1] := 0; end;
procedure TForm1.primzahlen; var index,index2:integer; begin For index := 2 To 10 Do For index2 := 2 To 100 Do If intervall[index2] mod index = 0 Then intervall[index2] := 0; ausgabe; end;
procedure TForm1.ausgabe; var index:integer; begin For index := 1 To 100 Do StringGrid1.Cells[0,index] := IntToStr(intervall[index]); end; |
Hoffe ihr wisst, wo mein denkfehler ist

Thx!
nGerrit
Moderiert von
Peter Lustig: Code- durch Delphi-Tags ersetzt