#python #memory-management #mathematical-optimization
#python #управление памятью #математическая оптимизация
Вопрос:
я хочу запустить простую программу с большими целыми числами. Программа предназначена для вычисления «идеального числа»
def is_perfect(x):
sum_of_positive_divisors = 0
for i in range(1,(x//2) 1):
if x%i == 0:
sum_of_positive_divisors =i
if x == sum_of_positive_divisors:
return 1
else:
return 0
for n in range(1,32):
print("n is %s",n)
num = 2**(n-1)*((2**n)-1)
if is_perfect(num):
print(num)
когда я запускаю эту программу в ноутбуке jupyter. Он работает в течение длительного времени без пика в памяти.
но когда я запускаю его в командной строке. Я получаю ошибку памяти через 10 секунд.
Я работаю на Python 3.8 на Raspberry Pi 4 (8 ГБ)
пожалуйста, помогите!!
Комментарии:
1. Если я правильно следовал коду, вы выполняете около 2 ** 60 итераций. Независимо от проблемы с памятью у вас не должно быть других планов на RPi в ближайшие несколько лет.
2. Большое вам спасибо, Клаус. для выявления моей болевой точки. Я ищу оптимизацию алгоритма, если смогу получить некоторые указания
3. Я смог немного оптимизировать дальше. добавлена функция для определения, является ли (2 ^ n)-1 простым , тогда (2 ^(n-1))*((2 ^ n)-1) идеально. Я могу вычислить до n, равного 89 (менее чем за час)… и продолжаю сейчас.