Einzelnen Beitrag anzeigen

Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#1

Primzahlen ausrechnen mal anders...

  Alt 28. Jan 2009, 21:37
Hi!
Ich bin gerade dabei eine Methode zu entwickeln, wie man die Primzahlen von 1 bis 1000000 ausrechnet.
Ich kenne das Sieb des Eratosthenes kenn ich schon, aber ich wollte mal was anderes ausprobieren.
Mein bisheriger Code rechnet wie verrückt aber spuckt nichts aus... woran liegt das?
Delphi-Quellcode:
const N=1000000;
var k,zz,z:longint;
    a:array[1..N] of longint;
    prim:boolean;
    
procedure ifprim(zahl:longint);
begin
    for k:=1 to z do
    begin
      if not zahl=k then
        if zahl mod a[k]=0 then
          prim:=false else
          begin
            prim:=true;
            z:=z+1;
            a[z]:=zahl;
            break;
// write(a[z]:8);
// z:=z+1;
          end;
    end;
    if prim then
    for k:=a[z] to zahl do
    begin
      if not zahl=k then
        if zahl mod k=0 then
           prim:=false else
          begin
            prim:=true;
            a[z]:=zahl;
            write(a[z]:8);
            break;
 // z:=z+1;
          end;
    end;
    if prim then
    begin
// write(a[z]:8);
      z:=zahl;
    end;
end;

begin
  a[1]:=2; a[2]:=3;
  z:=2;
  prim:=true;
  writeln('Begin?');
  readln;
  write(a[1]:8,a[2]:8);
  for zz:=3 to N do
  begin
    ifprim(zz);
  end;
end.
ich bin echt am verzweifeln...

gruß Teekeks

[edit=Luckie]Rechtschreibfehler im Titel korrigiert. Primzahl schreibt man ohne "ie". Mfg, Luckie[/edit]
[ich auch edit] Ich hab die anderen korrigiert... ^^[/edit]
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat