作爲一個副項目我正在處理一些自制的主要問題,試圖編寫一些不同的實現作爲自學C和C++的一種手段。當然,生成低質數的最快方法是已經擁有它們,所以我想要設置一個硬盤素數列表數據文件。我想編寫所有生成素數的代碼,但我對使用已有的存儲方法沒有任何疑問。在實際編碼方面,我幾乎沒有什麼經驗,但理解了大部分理論。 (注意,對於大多數的這一點,我將談論數學整數,而不是整型變量)無限(或非常高)的長度整數存儲
所以我有一些問題要你們,專家:
1)幼稚的做法也只是二進制 - 在生成它們時寫入整數。然而,在我的腦海中,我想象了一個列表,其中項目由某種標誌分隔,因此可以存儲大於32位的整數(如果我達到該點)。這顯然效率很低,但是數組[4723,12782,8357]的原始數據看起來像4723F12782F8357,即數字以十位數存儲在每十位數字中,並由F分隔。顯然ABCDE數字可能性的數據將不被使用,所以它不是一個非常有效的系統,但你明白我的意思。隨着數字變長,這也會越來越有意義,因爲在任何固定長度系統中,最小的入口必須與最大的入口一樣大。我確定必須有已經用C或C++編寫的東西纔能有效地做到這一點。
2)另一種可能性是一個長度聲明系統,在每個整數存儲之前,一個固定長度的數據(可以說是1個字節)聲明該整數將會變成多長(以位爲單位)。這顯然賦予了與前一種選擇類似的優點,並且不浪費數字可能性。
有誰知道如何去存儲這種數據呢?有沒有可以存儲素數的變量類型,以免碰到大小限制?更好的是,以簡單可檢索的格式將簡單的整數列表存儲到硬盤的最有效方法是什麼?
看看項目歐拉問題的解決方案 - 在那裏處理素數有很多聰明的想法。 – Skilldrick 2010-06-23 14:37:14