Prímszámok kiírása Pascalban?
Itt van SimkoL oldaláról a kód, ezt át tudod írni ahogy szeretnéd...
Köré írsz egy ciklust (nem túl elegáns), vagy külön beírod az egészet függvénybe és a cikluson belül hívogatod a függvényt a ciklusváltozóra...
program primszam;
uses Crt;
var n, v, i : longint;
prime : boolean ;
begin
ClrScr;
Write('Kerem a szamot: ');
ReadLn(n);
v := Trunc(Sqrt(n)) + 1;
prime := (n mod 2) <> 0;
i := 3;
while(prime) and (i <= v) do
begin
prime := (n mod i) <> 0;
Inc(i, 2);
end;
if prime then WriteLn('Prim') else WriteLn('Nem prim');
ReadLn;
end.
Sokan ismerik itt az oldalon, mert nagyon kedves és segítőkész, egy problémát nagyon sokféle megközelítésből tud bemutatni.
Bár én lennék ennyire profi, mit nem adnék érte... :S
Kérdező, nem egészen világos a számomra, mit művelsz a Random() függvénnyel, de ha nem akarod, hogy mindig ugyanazokat a számokat dobja ki, írd be valahová a program elejére a Randomize; utasítást.
Az első három számról biztosan tudod, hogy prím, azokat nyugodtan kihagyhatod a keresésből, tehát a ciklus indulhat a háromnál nagyobb számokkal, ahelyett, hogy minden menetben ellenőrzöd, hogy nem ez a különleges eset áll-e fenn. De ha már ezt a gazdaságtalan megoldást választod, miért csak a kettőt ellenőrzöd? Mellesleg ez is maximum a szándék lehetett, a megvalósítás a tökéletes értelmetlenség határát súrolja, azt is inkább a túloldalról. Először egy dupla ciklusban jó hosszan növelgeted db értékét (ez a ravasz szerkezet biztosítja, hogy semmiképp se lehessen kis szám):
for x:= random (100) to 100 do
for i:=1 to x do
if (x mod i)=0 then inc(db);
...Utána pedig megvizsgálod, hogy nem kettő-e véletlenül. Mit tesz Isten, sosem lesz az, pedig akkor és csak akkor írná ki, hogy prímszámot talált. Minden egyéb esetben (tehát az általad kikényszerített törvény értelmében) „nem prím” az eredmény.
Ha rám hallgatsz, előbb megpróbálod megérteni, mire való az összetett utasítások határait megadó begin..end; szerkezet, és csak azután fogsz problémamegoldásba.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!