Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Primzahlen detektor Problem!


-Nala- - Do 16.10.08 16:31
Titel: Primzahlen detektor Problem!
Hallo!
Ich habe ein Problem bei einem Programm, dass in einer for - Schleife die Primzahlen von 1 bis 1000 raussuchen soll.
Ich habe mir zuerst überlegt, dass ich einfach eine for schleife von 2 bis 1000 schreiben kann, die dann überprüft ob beim dividieren ein rest ensteht. (die 1 ja nicht weil sowiso alle Zahlen durch 1 teilbar sind). Allerdings fehlt mir an der Stelle das Wissen über die Syntax von Delphi. Man müsste ja im Prinzip 2 for - schleifen haben. eine für die zahlen durch die man teilt und einmal eine schleife für die zahlen die man durchprobiert.
Gibt es noch andere möglichkeiten außer die for-schleife Zahlen von eins bis 1000 mit einer variable auszudrücken?
Oder kennt ihr eventuell einen anderen Weg die Primzahlen von 1 bis 1000 herauszufinden?

Vielen dank schonmal vorab!


Chryzler - Do 16.10.08 16:39

user profile icon-Nala- hat folgendes geschrieben Zum zitierten Posting springen:
Man müsste ja im Prinzip 2 for - schleifen haben.

Was spricht dagegen? Du kannst theoretisch so viele For-Schleifen verschachteln wie du willst.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
for i := 2 to 1000 do
begin
  for j := 2 to Sqrt(i) do
  begin

    // ...
  end;
end;


Boldar - Do 16.10.08 16:39

Hiermit kann man auf Primzahlen testen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
Function IsPrim(zahl : Integer): boolean;
var
i: cardinal;
begin
  result := true;
  If zahl = 1 then
  begin
    result := false;
    exit;
  end;
  For i := 2 to Trunc(getsqrt(zahl))+1 do
  begin
    If ((zahl mod i) = 0) then
    begin
      result := false;
      exit;
    end;
  end;
end;


Ist aber nicht von mir, sondern aus irgendeinem Forum. Du brauchst dann nur noch eine Schleife.


BenBE - Fr 17.10.08 00:57

Zum Thema Primzahlen gibt es hier im Forum einige Threads in der Algo & Opti-Sparte.