Programozás tantárgyból lenne szükségem segítségre (Pascal). A feladat : döntsük el egy számról, hogy prím-e! Hogyan oldanátok meg? (Kiegészítések lent)
A program az eldöntés tételéhez tartozik, while ciklussal kéne megoldani, de valahogy nem látom át, hogy kéne működnie.
Gondolatmenetem: Addig növeljük az i értékét, amíg n szám osztva i-vel 0 maradékot eredményez (mod)
ha az i kisebb mint n szám, akkor van maradék, tehát nem osztható minden n-nél kisebb számmal maradék nélkül.
Ez szinte biztos hogy részben rossz.
Igény esetén forráskód részletet felrakok.
Minden segítséget előre köszönök!
Üdv.
Alakul, de for ciklussal sohasem lesz hatékony, mivel mindig elfut a ciklus végéig (pedig lehet, hogy nem kell neki mivel osztható 3-mal vagy 5-tel stb, stb).
Tehát ezt while ciklussal kell megoldani ahhoz hogy hatékony legyen, és, hogy ne csak a szám jártassam, ime amit én kreáltam :
Program Primszam;
Uses Crt ;
Var n : longint ;
v : longint ;
i : longint ;
prime : boolean ;
Begin
clrscr ;
write ('Kerem a szamot : ');
readln (n);
v:=trunc (sqrt (n))+1; { Ciklus vegerteke }
prime:=(n mod 2)<>0 ; { leteszteljuk 2-vel valo osztasra }
i:=3; { Haromtol indul a ciklus }
while (prime) and (i<=v) do begin
prime:=(n mod i)<>0 ; { Ha oszthato i-vel akkor false erteket kap }
i:=i+2; {kettessével haladunk, igy a páros számok kiesnek az osztók közül }
end ;
if prime
then writeln ('Igen')
else writeln ('Nem');
readln ;
End.
Sok sikert.
Üdv.
var szam,i,db: longint;
begin
readln(szam);
for i:=1 to szam do
if (szam mod i)=0 then inc(db);
if db=2 then writeln('Prím') else writeln('Nem prím');
readkey;
end.
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!