Mam problem z progrmem odszukującym liczby dokonałe. Jak go napisać?
2007-01-02 22:33:20, Bartek UWAGA: Pytanie nie zostało jeszcze sprawdzone przez administratora..!
2007-01-09 19:46:55, username UWAGA: Odpowiedź nie została jeszcze sprawdzona przez administratora..! program wyz_dzielnikow;
var n,i,q:integer;
tab:array [1..999] of integer;
BEGIN
repeat
write('Podaj liczbe z zakresu 1-999: ');
readln(n);
until (n>=1) and (n<=999);
q:=0; {ustawienie sumy na 0}
for i:=1 to n do {wpisywanie wartosci do tablicy}
begin
tab[i]:=i;
end;
for i:=1 to n-1 do {petla wyznaczajaca dzielniki}
begin
if (tab[n] mod (tab[n]-tab[i]))=0 then {jezeli rzeszta z liczby liczby n=n-i }
begin {rowna sie 0, znaczy ze liczba jest dzielnikiem}
q:=tab[n]-tab[i]+q ; {i jej wartosc jest dodawana do zmiennej q }
end; {odpowiadajacej za sume dzielnikow }
if (n mod (tab[n]-tab[i]))<>0 then {jezeli reszta <>0 wtedy do sumy nie jest }
begin {dodawana liczba, przez ktora dzielilismy }
q:=q+0;
end;
end;
write('Suma dzielnikow liczby ',n,' wylaczajac najwiekszy dzielnik wynosi: ');
writeln(q);
if q=n then {warunek sprawdzajacy czy suma=liczbie sprawdzanej}
begin
writeln('Liczba jest liczba doskonala! suma rowna sie liczbie');
end;
readln;