使用埃拉託斯特尼篩選法獲取質數的 Java 程式


要查詢任何給定限制內的所有質數,使用埃拉託斯特尼篩選法。首先,我們設定要檢查的值 -

int val = 30;

現在,我們取一個布林陣列,長度比 val 長 1 -

boolean[] isprime = new boolean[val + 1];

遍歷 val 並將數字設定為 TRUE。同時,將 0 和 1 設定為 false,因為這兩個數字都不是質數 -

isprime[0] = false;
isprime[1] = false;

以下是顯示使用埃拉託斯特尼篩選法獲取質數的其餘步驟的示例 -

示例

 動態演示

public class Demo {
   public static void main(String[] args) {
      // set a value to check
      int val = 30;
      boolean[] isprime = new boolean[val + 1];
      for (int i = 0; i <= val; i++)
      isprime[i] = true;
      // 0 and 1 is not prime
      isprime[0] = false;
      isprime[1] = false;
      int n = (int) Math.ceil(Math.sqrt(val));
      for (int i = 0; i <= n; i++) {
         if (isprime[i])
         for (int j = 2 * i; j <= val; j = j + i)
         // not prime
         isprime[j] = false;
      }
      int myPrime;
      for (myPrime = val; !isprime[myPrime]; myPrime--) ; // empty loop body
      System.out.println("Largest prime less than or equal to " + val + " = " + myPrime);
   }
}

輸出

Largest prime less than or equal to 30 = 29

更新於: 30-Jul-2019

307 次觀看

開啟您的 職業生涯

完成課程後獲得認證

開始
廣告
© . All rights reserved.