我在嘗試解決Project Euler problem 10,要求用戶計算所有素數小於200萬的總和。我通過研究pseudocode on Wikipedia寫了下面的,但它產生的答案似乎是不正確的,至少根據網站每當我試着輸入:生成 int main()
{
int limit = 2000000;
int answer = 5;
std::vector<bool
我正在做一個項目,我需要一個有效的方法來計算素數。我已經使用sieve of Eratosthenes但是,我一直在四處搜索,發現sieve of Atkin是一種更有效的方法。我發現很難找到這種方法的解釋(我已經能夠理解!)。它是如何工作的?示例代碼(最好用C或python)很棒。 編輯:感謝您的幫助,我仍然不明白的唯一東西是x和y變量在僞代碼中引用的內容。有人可以幫我解釋一下嗎?
我意識到事實上可以實施Eratosthenes篩,以便它可以在沒有上限(分段篩)的情況下連續找到質數。 我的問題是,Atkin/Bernstein的Sieve是否可以用相同的方式實現? 相關問題:C#: How to make Sieve of Atkin incremental 然而,相關的問題只有1個答案,它說「這是不可能的所有篩子」,這顯然是不正確。
因此,我制定了一個sieve of Atkin算法來生成素數(用於項目歐拉問題)。它返回一個名爲primes的素數數組(int [])。問題是,無論何時我嘗試從某個索引訪問該數組(我在main方法中這樣做)時,它都會拋出一個異常(java.lang.ArrayIndexOutOfBounds)。請幫助(如果您認爲我的邏輯與仙女分開,並且有更簡單的方法可以做到這一點,請告訴我)! import ja