篩法求N以內的素數Java實現

使用篩法求N以內的素數,從2開始,不斷剔除2的倍數,然后從剩下的數字中,選擇最小的數3(這個數一定會是素數),然后剔除所有3的倍數,依次類推,最后剩下的數就全是素數了。

public class Prime {
    // 返回n以內的素數列表
    public static int[] getPrimes(int n) {
        int[] a = new int[n];
        for(int i = 2; i < n; i ++) {
            a[i] = i;
        }
        // 篩法
        for(int i = 2; i < n; i ++) {
            if (a[i] != 0) {
                for(int j = i * 2; j < n; j = j + i) {
                    a[j] = 0;
                }
            }
        }
        int count = 0;
        for(int i = 2; i < n; i++) {
            if (a[i] != 0) {
                count ++;
            }
        }
        if (count > 0) {
            int[] primes  = new int[count];
            int j = 0;
            for (int i = 2; i < n; i ++) {
                if(a[i] != 0) {
                    primes[j] = a[i];
                    j ++;
                }
            }
            return primes;
        }
        return null;
    }

    public static void main(String[] args) {
        int[] a = getPrimes(10);
        for (int i = 0; i < a.length; i ++) {
            System.out.println(a[i]);
        }
        System.out.println();
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 第一章數和數的運算 一概念 (一)整數 1整數的意義 自然數和0都是整數。 2自然數 我們在數物體的時候,用來表示...
    meychang閱讀 2,652評論 0 5
  • pecl的mongodb擴展鏈接我們很多開發工作都要在windows下進行,但是在windows下給這些腳本程序安...
    ppmoon閱讀 7,571評論 10 50
  • 每日都勵志學習久一點,想要晚睡一點點,每次都失敗。每天早晨都想晚起一點點,可是生物鐘或者肚子準時叫我起床。迷蒙的走...
    巧笑嫣然兮閱讀 319評論 0 0
  • There is no doubt that we should never go out there to se...
    學會順服閱讀 29,086評論 1 4