![]() |
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:
sollte doch eigentlich funktionieren oder?
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; was ist mein fehler? greetz |
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:
wohl immer liefern wird.. :stupid:
i mod i = 0
|
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; |
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).
|
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. |
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:
Hoffe ich habe das ungefair richtig aus dem Kopf hier aufgeschrieben.
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; 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 02:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz