天天看點

輸入一個數(N),列出(1~N)之間的素數

我們首先來了解下素數的定義,素數不能被除了1和它本身之外的數整除,也就是說我們可以使用for循環進行判斷

Scanner in = new Scanner(System.in);
        System.out.println("請輸入一個數(N),将會列出(1~N)之間的素數");
        int n = in.nextInt();
        boolean[] b = new boolean[n+];    //建立一個辨別符數組,長度為n+1
        for (int i = ; i <= n; i++) {     //數組下标從3開始
            b[i] = true;                   //将true指派給b[i]
            for (int j = ; j < i; j++) {
                if (i % j == )            //如果i可以被j整除,則它不是素數
                    b[i] = false;          //将false指派給b[i]
            }
        }
           

通過上面的代碼,可以發現,當某個數字i被判斷為不是素數是,與之對應的b[i]則為false,也就是說,b數組中為true的數組下标就是素數

System.out.print();  //2是素數
        for (int m = ; m < b.length; m++) {
            if (b[m] == true)
                System.out.print(" " + m);
        }
           

完整代碼如下

package com.lenovo.work19;

import java.util.Scanner;

public class PrimeNumber {

    public static void main(String[] args) {
        boolean f;

        Scanner in = new Scanner(System.in);
        System.out.println("請輸入一個數(N),将會列出(1~N)之間的素數");
        int n = in.nextInt();
        boolean[] b = new boolean[n+];
        for (int i = ; i <= n; i++) {
            b[i] = true;
            for (int j = ; j < i; j++) {
                if (i % j == )
                    b[i] = false;
            }
        }
        System.out.print();
        for (int m = ; m < b.length; m++) {
            if (b[m] == true)
                System.out.print(" " + m);
        }
    }
}
           

執行結果為:

輸入一個數(N),列出(1~N)之間的素數

繼續閱讀