Mi a hibám? A feladat az, hogy beolvasunk egy számot, és a programnak ki kell írnia, hogy a szám prímszám-e vagy nem? Csak ki kell javítani. Minden számnál jó, csak a kettőnél nem.
program potyok8;
uses crt;
var i,szam, kerekit:integer;
oszto:qword;
begin
clrscr;
writeln('Add meg a számot');
readln(szam);
kerekit:=round(sqrt(szam));
oszto:=2;
for i:=1 to kerekit do
if (szam mod oszto=0) or (szam=1) then
writeln('Nem Prímszám')
else
writeln('Prímszám');
readln;
end.
2re nem fut le a for ciklus-> round(sqrt2)= 1?
for(1től 1ig)
szerintem simán readln utan if szam 2 then prim else kerekit oszto.. és a többi
Ez helyesen lefut bármire is?... Mert nem kéne neki. Az oszto-t 2-re beállítod, ezután sqrt(n)-szer kiírod, hogy a szám páros-e. (ha páros, azt írod ki, nem prím, ha páratlan, azt, hogy prím, sqrt(n)-szer)
A for i:=1 to kerekit do sort töröld. Írd ezt:
while (oszto<=kerekit) and (szam Mod oszto=0) do
oszto:=oszto+1;
Az if helyett ez legyen:
if (oszto<=kerekit) or (szam=1) then
writeln('nem primszam')
else
writeln('primszam');
A kerekit szamolásánál meg trunc-t használj round helyett.
Remélhetőleg nem írtam el semmit, és így működik.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, 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!