Lazarus - prvočísla

Programovacie jazyky, rady, poradňa...
Innocence
VIP
VIP
Používateľov profilový obrázok
Príspevky: 2451
Registrovaný: 05 jan 2008, 10:16
Bydlisko: Bratislava

Lazarus - prvočísla

Príspevok od používateľa Innocence »

Ahojte, mám malý problém, robím program, do ktorého zadám číslo a vypíše mi všetky prvočísla od 2 po mnou zadané číslo.

Spravil som niečo takéto:

Kód: Vybrať všetko

var n, i, b: Integer;
begin
  WriteLn('PROGRAM NA ZISTOVANIE PRVOCISEL');
    WriteLn('');
  Write('Zadaj cele cislo vacsie ako jedna: ');
  ReadLn(n);
WriteLn;

  b :=0;

if n<2 then WriteLn('Zle zadane cislo.')

else

while n>2 do

begin
  for i := n downto 2 do
  if n mod i =0 then b := i;
  if b=n then Write(n, ' ');
  n:=n-1;
end;

ReadLn;
end. 
Čísla mi však vypisuje od najväčšieho po najmenšie, ako spraviť, aby to vypisovalo naopak? Tuším, že tam bude namiesto "for i := n downto 2 do" niečo ako "for i := x downto n do" pričom počiatočná hodnota x bude 2 a bude tam použitá funkcia Inc(x) ale akosi to neviem dať dokopy, vedel by mi s tým niekto pomôcť? Vďaka vopred.
metthal
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2475
Registrovaný: 26 jan 2006, 18:32
Bydlisko: Nitra / Brno

Re: Lazarus - prvočísla

Príspevok od používateľa metthal »

staci to vymenit za

Kód: Vybrať všetko

for i:=2 to n do
A potom vazne netusim preco znizujes N, i je riadiaca premenna cyklu, ktora sa podla klucoveho slova to/downto na konci iteracie bud zvysi alebo znizi
Innocence
VIP
VIP
Používateľov profilový obrázok
Príspevky: 2451
Registrovaný: 05 jan 2008, 10:16
Bydlisko: Bratislava

Re: Lazarus - prvočísla

Príspevok od používateľa Innocence »

Kód: Vybrať všetko

begin
  for i := 2 to n do
  if n mod i =0 then b := i;
  if b=n then Write(n, ' ');
end;
Keď som to dal takto, výsledok je:

//obrázky dávaj do prílohy!
javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: Lazarus - prvočísla

Príspevok od používateľa javatar »

lebo stale davas vypisovat n

a v tvare akom to mas (s to a nie downto) ti ako prvocislo oznaci kazde cislo

dalej v tom programe neznizujes n - kedze for sa vztahuje len na jeden prikaz tak to znizovanie n je tam potrebne... ale aj tak to robis blbo...
Innocence
VIP
VIP
Používateľov profilový obrázok
Príspevky: 2451
Registrovaný: 05 jan 2008, 10:16
Bydlisko: Bratislava

Re: Lazarus - prvočísla

Príspevok od používateľa Innocence »

Tak som to skúsil inak:

Kód: Vybrať všetko

var cis, del, poc_del, x: integer;
begin

Write('Napis cele cislo vacsie ako 2: ');
ReadLn(x);
WriteLn;

if x<2 then WriteLn('Zle zadane cislo.')
else

begin
WriteLn('Prvocisla v tomto intervale: ');

for cis:=2 to x do

begin
poc_del:=0;
for del:=2 to cis div 2 do
if cis mod del =0 then inc(poc_del);
if poc_del = 0 then write (cis,' ')
end;

end;

ReadLn;
end.  
Funguje to, ešte potrebujem príkaz, ktorý mi vypíše, že "V tomto intervale sa nachádza XYZ prvočísel" aká je na to funkcia? Ospravedlňujem sa, s programovaním len začínam :/
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Lazarus - prvočísla

Príspevok od používateľa BX »

WriteLn ( 'V tomto intervale sa nachadza ', pocet_prvocisel, ' prvocisel' );
javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: Lazarus - prvočísla

Príspevok od používateľa javatar »

spravis tieto upravy
var cis, del, poc_del, x, pocet_prvocisel: integer;
begin
pocet_prvocisel := 0;
if poc_del = 0 then
begin
write (cis,' ');
inc(pocet_prvocisel);
end;
Writeln('pocet prvocisel na danom intervale: ',pocet_prvocisel);
ReadLn;
end.
snad som to napisal, bez syntaktickych chyb...
Innocence
VIP
VIP
Používateľov profilový obrázok
Príspevky: 2451
Registrovaný: 05 jan 2008, 10:16
Bydlisko: Bratislava

Re: Lazarus - prvočísla

Príspevok od používateľa Innocence »

Vďaka, super :)
metthal
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2475
Registrovaný: 26 jan 2006, 18:32
Bydlisko: Nitra / Brno

Re: Lazarus - prvočísla

Príspevok od používateľa metthal »

Ospravedlnujem sa za rannu chybnu informaciu, ale to som mal este dobru opicu. :D
Napísať odpoveď