Strona 1 z 1

Liczby doskonałe w Pascalu

: 4 paź 2009, o 17:56
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ę.

Liczby doskonałe w Pascalu

: 4 paź 2009, o 22:46
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);
}

Liczby doskonałe w Pascalu

: 9 paź 2009, o 18:37
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.