2013-01-19 67 views
-1

參數/變量對於以下程序存儲限制爲在python

def sum_naturals(n): 
    total, k = 0, 1 
    while k <= n: 
     total, k = total + k, k + 1 
    return total 

sum_naturals(5000000000000000000000) 

從過去的20分鐘,在等待來自處理器英特爾T1400 1.83千兆赫的輸出。

我的問題是,

如何處理巨蟒這麼大的數據,因爲我的處理器只有32位寄存器? C程序會很早就給出錯誤?

深水

回答

0

Python的int類型支持任意大的數字。在內部,有兩種表示方式:一種是針對小數字的int機器,另一種是針對較大數字的int整數(以及單獨存儲的符號)。數組代表大基數中的數字的數字。

+1

儘管在內部的區別(實際上並不真實,因爲兩者是不同的Python類型並且顯示方式不同)在3.x中消失了,但所有整數都是任意精度。 – delnan

+0

hello delnan well python不需要鍵入一個變量作爲語言,我想你在談論python解釋器的內部結構,其中整數存儲爲數組來處理巨大的值。但是,在Python中的整數值是否有任何限制,例如在c語言中,32位是-2^15-1到2^15-1。對於你的陳述,假設爲 – user1787812

+0

:「對於小數字是一臺機器int,對於大數字爲int的數組(和符號,它是單獨存儲的)」。你是說整數不是以Python的二進制補碼格式存儲的嗎? – user1787812