2012-01-05 45 views
3

可能重複:
Enumerable.Range implementation擴展Enumerable.Range

我遇到了,我需要添加一個很長的值(Int64)到列表中的問題,該值是600851475143 ,我想創建一個List<Int64>,其中包含所有int直到此值,但Enumerable.Range有一個限制,即在count參數中,它只接受int值,因爲我遠離該值,我決定循環遍歷該列表,並且所有這些值,埠我的系統很快就會耗盡內存,我該怎麼辦?

List<int64> lst = new List<int64>(); 

for (Int64 i = 3; i < 600851475143; i=i+2) 
{ 
    lst.Add(i); 
} 

由於

+5

您應該說明您真正想要做什麼,因爲您無法真正需要600B數字的5TB數組! – Gabe 2012-01-05 06:56:24

+1

這真的是個好主意嗎?您是否意識到該列表需要[4.37 terabytes](https://www.google.com/search?hl=en&q=600851475143%20\*%2064%20bit)內存? – Kobi 2012-01-05 06:56:41

+1

您的系統是否有600,851,475,143 x 8字節=我相信〜6 TB的RAM?如果沒有,那麼爲什麼你不期望這會填滿你的記憶? – 2012-01-05 06:57:30

回答

0

正如評論所指出,這樣的大型陣列將需要的存儲器的大量。比如更好的選擇是創建一個枚舉器來遍歷整個範圍。開始查看此頁面以瞭解如何:http://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx :-)

+0

是的,這聽起來像一個絕妙的想法,我會刪除所有可以整除我以前的素數的值, – 2012-01-05 07:10:12