Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Primzahlen ausgeben (Problem) (https://www.delphipraxis.net/130943-primzahlen-ausgeben-problem.html)

Reincanation 16. Mär 2009 13:30


Primzahlen ausgeben (Problem)
 
Hi, habe ein Problem

Ich soll die Primzahlen von 0-100 in ein Labelfeld ausgeben, habe es theoretisch auch schon geschafft aber irgendwie wills bei mir nicht so ganz...

Delphi-Quellcode:
var
i:integer;
begin
repeat
i:=i+1;
if i mod i = 0 then
label1.caption:=label1.caption+inttostr(i)+char(13);
until i=100;
end;
sollte doch eigentlich funktionieren oder?

was ist mein fehler?

greetz

Neutral General 16. Mär 2009 13:32

Re: Primzahlen ausgeben (Problem)
 
Hi,

Also 2 Sachen fallen mir direkt mal auf:

Du hast i nicht initialisiert. i ist in deiner Schleife ein beliebiger Wert.
Und rate mal was

Delphi-Quellcode:
i mod i = 0
wohl immer liefern wird.. :stupid:

Reincanation 16. Mär 2009 13:39

Re: Primzahlen ausgeben (Problem)
 
OK, danke stimmt :D

aber wenn ich das jetzt so anschreibe dann werden die Zahlen einfach nach der Reihe ausgegeben und der Mod Vorgang wird ignoriert -.-

EDIT:

ah das mit dem mod seh ich erst jetzt!
aber wie kann man das umgehen?

sry ich bin ein vollidiot auf dem Gebiet Delphi -.-
Delphi-Quellcode:
var
i:integer;
begin
i:=0;
repeat
i:=i+1;
if i mod i = 0 then
label1.caption:=label1.caption+inttostr(i)+char(13);
until i=100;
end;

DeddyH 16. Mär 2009 13:44

Re: Primzahlen ausgeben (Problem)
 
Wie ist eine Primzahl denn definiert? Sofern Du nicht auf fertige Funktionen zugreifen darfst/willst, brauchst Du im einfachsten Fall eine 2. Schleife (ich weiß, dass das unperformant ist, aber für das Verständnis ist das so das Einfachste).

Neutral General 16. Mär 2009 13:52

Re: Primzahlen ausgeben (Problem)
 
Hi,

Ich hab dir doch schon gesagt:

i mod i

ist Schwachsinn.. Überleg dir doch mal

1 mod 1
2 mod 2
3 mod 3
4 mod 4

Da kommt IMMER 0 raus.

BAMatze 16. Mär 2009 13:52

Re: Primzahlen ausgeben (Problem)
 
Also ich glaube du gehst das etwas falsch an, mal abgesehen, dass du auch in deinem 2. Post immernoch i mod i hast, was immer 0 ergibt.

Du musst es ungefair so machen:
Delphi-Quellcode:
for i:= 2 to 100 do // laut Konvention beginnen Primzahlen ab 2
  begin
    Anzahl := 0;
    for j := i downto 1 do
      begin
        if i mod j = 0 do Anzahl := Anzahl + 1;
      end;
    if Anzahl = 2 then  // bei 2 Teilern, die bei mod 0 ergeben, kann es sich nur um die Zahl i selbst und um 1 handeln und entspricht somit den Konventionen für eine Primzahl
      begin
        // hier muss deinem Labelfeld nun die neu gefundene Primzahl hinzugefügt werden.
      end;
  end;
Hoffe ich habe das ungefair richtig aus dem Kopf hier aufgeschrieben.

MfG BAMatze

Edit 1: es handelt sich hier nur um einen schmatischen Text und kann nicht 1:1 übernommen werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz