Znajdz wszystkie dzielniki naturalne

0

Zaczałem od poczatku naukę Pascala i mam teraz kłopot z programem. Mam za zadanie wypisanie wszystkich naturalnych dzielników.
Jak na razie zrobiłem takie coś i niezbyt mi wychodzi więc proszę o pomoc i poprawę:

program dzielnik ;
var
 i:Integer;
 n:longint;

begin

 read(n);
  for i:=1 to n do
   begin
   if i mod n=0  then
   writeln('Liczba jest dzielnikiem');

   else
   writeln('Liczba nie jest dzielnikiem');
   end;
  readln;
end.
0

Z pamięci ale powinno być dobrze:
Zobacz jak ma wyglądać instrukcja if i zapamiętaj, że przed else ma nie być średnika.

program dzielnik ;
var
  i:Integer;
  n:longint;
begin
  write('Podaj liczbe: ');
  read(n);
  for i:=1 to n do
  begin
     if ((n mod i) = 0) then
      writeln('Liczba: ', i, ' jest dzielnikiem')
  else
      writeln('Liczba: ', i, ' nie jest dzielnikiem');
  end;
  readln;
end.
0
  1. jak już to sprawdzasz czy n mod i = 0 bo to i jest dzielnikiem
  2. pętla powinna być od 2 do n div 2 - przecież wszystko dzieli się przez 1 i nie dzieli się całkowicie przez więcej niż n div 2
0

Jeżeli nie muszą być po kolei to można to zrobić szybciej

var d,n:integer;
begin
        readln(n);
        d:=1;
        while d*d<n do begin
                if (n mod d) = 0 then 
                        write(d, ' ', n div d, ' ');
                d:=d+1;
        end;
        if d*d=n then write(d);
end. 

1 użytkowników online, w tym zalogowanych: 0, gości: 1