1. 程式人生 > >Java 素數篩選法

Java 素數篩選法

要求:輸出從整數n到整數m(n

boolean[] isPrime = new boolean[m + 1]; 

2、將陣列下標為0和1的元素置為false。

isPrime[1] = false;  
isPrime[0] = false; 

3、將陣列下標從2到m的元素,全部置為 true。

Arrays.fill(isPrime, 2, m + 1, true);  

4、排除2,3,4,5,6,…i(i*i<=m)的倍數;

 for (int i = 2; i <= m; i++) 
 //設定陣列的boolean值
        {
            if
(isPrime[i]) { for (int j = i; j * i <= m; j++) //當i=2時,將2的倍數置為false //i從2到i*i<=m,將2,3,4,5,6,...i(i*i<=m)的倍數置為false { isPrime[j * i] = false; } } }

5、輸出值為true的陣列下標。完整程式碼如下:

package com.easy;
import java.util.Arrays;    
public class IsPrime 
{    
    public static boolean[] printPrime(int n, int m) 
    {  
        boolean[] isPrime = new boolean[m + 1];  
        isPrime[1] = false;  
        isPrime[0] = false;  
        Arrays.fill(isPrime, 2,m + 1, true);  
        for
(int i = 2; i <= m; i++) { if (isPrime[i]) { for (int j = i; j * i <= m; j++) { isPrime[j * i] = false; } } } return isPrime; } public static int fun( int n, int m) { // 個數 int count = 0; boolean[] isPrime = printPrime(n, m); for (int i = from; i <= m; i++) { if (isPrime[i] == true) { count++; System.out.print(i + " "); } } return count; } public static void main(String[] args) { System.out.println(fun(5, 20)); } }