Совершенные числа известны со времен Пифагора. Число называется совершенным, если сумма всех его делителей, за исключением самого числа,равнялась этому числу. Так, число 6 — совершенное, поскольку его делители 1, 2 и 3 в сумме составляют 6.
Я написал пару тестов на питоне, которые падают по причине того, что ядро у меня сейчас на данный момент 32-битное, и вся память сжирается.
Первый тест считает только первые 5 совершенных чисел, второй - семь
Мне интересно, какие результаты будут на 64-битной архитектуре
В первом тесте можно поиграться с диапазоном 2,14 Во втором использовать в массиве бОльше чисел из последовательности Мерсенна
for i in range(2,14):
x=2**(i-1)*(2**i-1)
s=1
for j in range(2,x/2+2):
if(x%j==0):
s+=j
if (x==s):
print '=====' +str(x)
n=[2, 3, 5, 7, 13, 17, 19]
for i in n:
s=1
s = reduce(lambda x, y: x+y , range(1, 2**i))
print s