Első 20 prímszám kiírása Free Pascalban. Hogyan?
Nem fogom leírni hogy kell... nem is az számít, hanem a logikája.
1. Minden probléma megoldásánál az első lépes megfogalmazni a problémát. Ez esetben ez nem nehéz.
2. Ekkor (jobb esetben) felmerül benned a kérdés, mikor prím egy szám. Akkor ha összesen 2 osztója van 1 és önmaga.
3. Magyarul azt kell megvizsgálnod, hogy egy adott szám 1-nél nagyobb de nála kisebb számok esetnén van-e osztási maradék. Ha nincs akkor az adott szám nem lehet prím, hiszen a számod egy másikkal maradék nélkül osztható.
4. Innentől már csak pár ciklus vezet el a boldogságig, amiben számolod, hogy hány prímet találtál eddig és ellenőrzöd hogy az legfeljebb 20 legyen, illetve egy olyanra ami ]1;n[ intervallumban maradék nélkül osztható e a számod, ha n az adott szám (természetesen az intervallumot csak az egész számokra értjük).
Hajrá!
Jéé én vagyok a 19:35-ös :D
Nem írom le, már azért sem mert nem ismerem a nyelvet :D
De írj privit, segítek.
Nem elég, hogy nCoreon kaptál még példa kódot is?
Csak át kell írni C-ról pascalba...
program primszamok;
uses crt;
var i,sz:integer;
function primszam(sz:integer):boolean;
var z:real;
o:integer;
begin
primszam:=false;
z:=sqrt(sz);
o:=1;
repeat
o:=o+1;
until (sz mod o=0) or (o>=z);
if (sz mod o<>0) or (sz=1) or (sz=2) then primszam:=true;
end;
begin
clrscr;
sz:=1;
for i:=1 to 20 do
begin
sz:=sz+1;
if primszam(sz) then write(sz,', ');
end;
readkey;
end.
Ez így talán valamivel jobb az előző változatomtól:
program primszamok;
uses crt;
var i:integer;
function primszam(sz:integer):boolean;
var z:real;
o:integer;
begin
primszam:=false;
z:=sqrt(sz);
o:=1;
repeat
o:=o+1;
until (sz mod o=0) or (o>=z);
if sz mod o<>0 then primszam:=true;
end;
begin
clrscr;
for i:=1 to 20 do if primszam(i) then write(i,', ');
readkey;
end.
Harmadik változat:
program primszamok;
uses crt;
var i,drb:integer;
function primszam(sz:integer):boolean;
var z:real;
o:integer;
begin
primszam:=false;
z:=sqrt(sz);
o:=1;
repeat
o:=o+1;
until (sz mod o=0) or (o>=z);
if (sz mod o<>0) or (sz=1) or (sz=2) then primszam:=true;
end;
begin
clrscr;
drb:=0;
i:=1;
repeat
if primszam(i) then
begin
write(i,' ');
drb:=drb+1;
end;
i:=i+1;
until drb=20;
end.
:D
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!