Liczby doskonałe w Pascalu

king.
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 20 wrz 2009, o 12:53
Płeć: Kobieta
Lokalizacja: Warszawa

Liczby doskonałe w Pascalu

Post autor: king. »

Nie mogę sobie poradzić z zadaniem. Chodzi o to, aby napisać program w Pascalu wyliczający liczby doskonałe (równe sumie swoich dzielników, bez siebie samej) od 1 do 1000. Bardzo proszę o pomoc i z góry dziękuję.
matshadow
Użytkownik
Użytkownik
Posty: 941
Rejestracja: 17 gru 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Kingdom Hearts
Podziękował: 6 razy
Pomógł: 222 razy

Liczby doskonałe w Pascalu

Post autor: matshadow »

w pseudokodzie:

Kod: Zaznacz cały

for (licz=1 do 1000)
{
       suma_dziel=0;
       for(i=1 do licz-1)
       {
            if(licz mod i = 0) suma_dziel=suma_dziel+i;
       }
       if(suma_dziel=licz) writeln(licz);
}
Xitami

Liczby doskonałe w Pascalu

Post autor: Xitami »

Kod: Zaznacz cały

var
  p, i, n: longword;   //32 bity
  s, n1: int64;      //64 bity

begin
  p:=2;
  n:=3;  // n  = 2^p - 1
  n1:=2; // n1 = 2^(p-1)
         // n1*n może być liczbą doskonałą
  repeat

    s:=4;                   // 1. Lucas-Lehmer test
    for i:=3 to p do        // 2.
      s:=(s*s - 2) mod n;   // 3.
    if (s=0) or (p=2) then  // 4.

       writeln('Mersenne=2^', p:2, '-1=', n:12, ',  perfect number = ', n1*n);
    p+=1;
    n1:=n+1;
    n:=2*n+1;
  until p>31;
end.
ODPOWIEDZ