Autor Beitrag
-Nala-
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: Do 16.10.08 16:31 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: 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.
ausblenden 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;


Zuletzt bearbeitet von Chryzler am Do 16.10.08 16:40, insgesamt 1-mal bearbeitet
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Do 16.10.08 16:39 
Hiermit kann man auf Primzahlen testen:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 17.10.08 00:57 
Zum Thema Primzahlen gibt es hier im Forum einige Threads in der Algo & Opti-Sparte.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.