Liczby doskonałe w Pascalu
Liczby doskonałe w Pascalu
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ę.
-
- 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
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
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.