Сегодня я написал программу, использующую массив / список с 64000000 записей. Тем не менее, при написании sigma=[1]*64000000
с использованием Python он работает нормально, но позже, когда программа вычисляет, моя Ubuntu зависает - без какой-либо реакции на ввод, даже движения мыши. Я пытался дважды, и результаты совпадают.
При реализации в C ++ long long sigma[64000000]
прекрасно работает и работает очень быстро.
Есть ли какая-либо причина, по которой моя программа зависла бы в середине работы, кроме сбоев в начале?
РЕДАКТИРОВАТЬ: Чтобы ответить Крису ниже, мой код не зависает до тех пор, пока через пару циклов.
Спасибо всем!
Для тех, кто заинтересован в просмотре кода, это программа, грубая сила Project Euler 211:
def e211():
ans=0
sigma=[1]*64000000
for i in range(2,64000000):
j=i;
if ((j%1000==0) or (j<100)):
print(j)
q=i*i
while j<64000000:
sigma[j]+=q
j+=i
for i in range(1,64000000):
j=int(sqrt(sigma[i]))
if j*j==sigma[i]:
ans+=i
if __name__=='__main__':
print(e211())