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;

END.


kiedys pisalem cos takeigo...2in1 ;p







Udziel odpowiedzi na powyższe pytanie...

Twoja odpowiedź:
 


Podpis: 

Wpisz wynik: trzy dodać pięć równa się (pisane cyfra)

 ::: działy ::::
 
  pascal
  kursy pascala
  programy
  artykuły
  pascal faq
  zadania
  linki
 ::: -+- ::::
 ::: extra ::::
:::: subskrypcja
:::: powiadamiacz
:::: księga gości
:::: zgłoś błąd


pascal | kursy pascala | programy | artykuły | pascal faq | zadania | linki

kawaguchi@wp.pl 2002-2006. Wszelkie prawa zastrzeżone.


  :::: www.pascal.kaviorek.com ::::
  chat
  forum