今天我用64000000個條目編寫了一個使用數組/列表的程序。但是,在使用Python編寫sigma=[1]*64000000
時,它運行良好,但隨後在程序計算時,我的Ubuntu凍結 - 沒有任何對輸入的反應,甚至沒有鼠標移動。我試了兩次,結果是一樣的。Python中大型列表的內存管理
在C++中實現時,long long sigma[64000000]
可以保持良好並且運行速度非常快。
是否有任何理由讓我的程序在運行過程中凍結,除了開始崩潰?
編輯:要回復下面的克里斯,我的代碼沒有凍結,直到後來幾圈。
謝謝大家!
對於那些誰希望看到的代碼,這是程序,蠻力項目歐拉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())
您在C++堆棧上分配了500MB數組? – 2011-05-30 04:52:47
你正在使用哪個版本的python? – 2011-05-30 04:54:14
@Nicholas那麼這是比賽程序員的日常用餐:) – 2011-05-30 04:56:15