Autor Beitrag
nGerrit
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 15.03.04 21:31 
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 :)

ausblenden 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 von 1 bis 100
  intervall[index] := index;
  intervall[1] := 0;              //1 wird gestrichen
end;

procedure TForm1.primzahlen;
var index,index2:integer;
begin
  For index := 2 To 10 Do                        //die vielfachen von index sollen gestrichen werden
    For index2 := 2 To 100 Do                   // das ist das intervall
      If
        intervall[index2] mod index = 0       //wenn an der stelle durch index teilbar ist, dann wirds gestrichen
      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 user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 15.03.04 21:43 
Hallo!

Ganz einfach: Du musst noch prüfen, ob index <> index2 ist. Denn dass 2 mod 2 = 0 ist, ist ja noch lange kein Grund, diese arme, unschuldige Zahl zu streichen! :-)

MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
nGerrit
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 15.03.04 22:02 
juhu danke :) wusste, dass ich mich auf euch verlassen kann :)

nGerrit