Thema: Delphi Primzahlen Sieb

Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Primzahlen Sieb

  Alt 9. Mär 2009, 13:04
Zitat von harryi:
Ich habe eigentlich alles verstanden, aber irgendwie will es nicht klappen.
Du hast vieleicht alles verstanden, aber nicht richtig umgesetzt.
Rück deinen Code mal ordentlich ein, dann siehst du vieleicht auch schon den ersten Fehler.

Delphi-Quellcode:
for i:=2 to nmax do
  prim[i]:=1;
Das Array wird ordentlich initialisiert, so weit so gut.

Fehler:
Delphi-Quellcode:
while v*i<=nmax do
begin
Die Variable i ist nach dem Schleifendurchlauf undefiniert, das müsste dir der Compiler an dieser Stelle auch melden.
Tatsächlich wird hier eine neue Schleife benötigt, in der für jede Zahl die eine Primzahl ist, das "Aussieben" erfolgt.

Richtig:
Delphi-Quellcode:
for i:=2 to nmax do
begin
  if prim[i] = 1 then
  begin
    v:=2;
    while v*i<=nmax do
    begin
Fehler:prim[i]:=0; Natürlich nicht i sondern v * i, das jeweilige vielfache der Primzahl ist keine Primzahl.

Richtig:prim[v * i]:=0;
  Mit Zitat antworten Zitat