2012-01-05 2 views
3

を拡張可能な重複:
Enumerable.Range implementationEnumerable.Rangeに

私はリストに非常に長い値(Int64)を追加する必要が問題に走った、値は600851475143です私はList<Int64>を作成したいのですが、Enumerable.Rangeには、countパラメータでint値だけを受け入れるという制限があります。これは、その値から遠いので、リストをループすることにしました。それらのすべての値、bu私のシステムは、記憶がなくなり、私は何をすべきですか?

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

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

コメントで指摘したように感謝

+5

実際に何をしようとしているのかを説明する必要があります.600Bの5TB配列が本当に必要なわけではありません。 – Gabe

+1

本当にいいアイデアですか?リストに[4.37テラバイト](https://www.google.com/search?hl=en&q=600851475143%20\*%2064%20bit)のメモリが必要だとわかりますか? – Kobi

+1

システムに600,851,475,143×8バイト= 6テラバイトのRAMがあると思いますか?そうでなければ、なぜあなたの記憶がいっぱいになるとは思わないでしょうか? –

答えて

0

は、このような大規模な配列は、メモリの膨大な量を必要とします。より良い選択肢は、範囲をループする列挙子を自分自身で作成することです。このページでは、以下の方法をご覧ください。http://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx :-)

+0

ええ、それは素晴らしいアイデアのように聞こえる、私は私の前の素数に割り切れるすべての値を削除しますが、 –

関連する問題