Liczba doskonała to taka liczba, która jest równa sumie wszystkich swoich dzielników mniejszych od niej samej. Wyznacz wszystkie liczby doskonałe mniejsze od danego \(\displaystyle{ n}\).
Pomoże ktoś?
Z góry dziękuję.
[Delphi][Lazarus] Liczba doskonała
[Delphi][Lazarus] Liczba doskonała
Ostatnio zmieniony 27 sty 2015, o 20:09 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Powód: Poprawa wiadomości.
- sebnorth
- Użytkownik
- Posty: 635
- Rejestracja: 12 sty 2011, o 16:27
- Płeć: Mężczyzna
- Lokalizacja: Puck i Trójmiasto
- Pomógł: 201 razy
[Delphi][Lazarus] Liczba doskonała
W Pythonie: program wypisuje wszystkie do 1000
Kod: Zaznacz cały
def sumadzielinkow(n):
suma = 0
for i in range(1, n//2+1):
if n % i == 0:
suma += i
return suma
def doskonala(n):
return sumadzielinkow(n) == n
def doskonala1000():
lista = [n for n in range(1, 1000) if doskonala(n)]
return lista
print doskonala1000()
# [6, 28, 496]
-
- Użytkownik
- Posty: 132
- Rejestracja: 1 cze 2012, o 07:04
- Płeć: Mężczyzna
- Lokalizacja: Polska
- Pomógł: 15 razy
[Delphi][Lazarus] Liczba doskonała
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.