def sdel(x): # сумма делителей числа x sum = 1 for i in range(2, int(x**0.5)+1): if x % i == 0: sum += i if i != x / i: sum += x / i return sum i = 2 while i < 10*40: if sdel(2**i-1) == 1: # если оно простое print (2**i-1) * (2**(i-1)) f = open("perfects.log", "a") # мы еще и в файлик выводили f.write(str((2**i-1) * (2**(i-1))) + " ") f.close() i+=1
Получился такой вот вывод:
6 28 496 8128 33550336 8589869056 137438691328 2305843008139952128
Объясните, почему алгоритм останавливается на 9-ом числе?