Java - 找1-100中所有質數

By sunwc 2023-03-18 Practice
public static void main(String[] args) {

    for (int i = 2; i <= 100; i++) {
        boolean flag = true;

        // 質數是只能被1與自己整除,所以判斷非質數範圍就只能是 2 ~ (i-1)
        // for (int j = 2; j < i ; j++) {
        for (int j = 2; j <= Math.sqrt(i) ; j++) {
            // 優化二、j <= Math.sqrt(i)開根號:對質數的計算提升效率

            if (i % j == 0) {
                // 非質數
                flag = false;

                // 優化一、break對非質數的計算提升效率
                break;
            }
        }
        if (flag) {
            System.out.println("印出當前質數 : " + i);
        }
    }
}

輸出結果

印出當前質數 : 2
印出當前質數 : 3
印出當前質數 : 5
印出當前質數 : 7
印出當前質數 : 11
印出當前質數 : 13
印出當前質數 : 17
印出當前質數 : 19
印出當前質數 : 23
印出當前質數 : 29
印出當前質數 : 31
印出當前質數 : 37
印出當前質數 : 41
印出當前質數 : 43
印出當前質數 : 47
印出當前質數 : 53
印出當前質數 : 59
印出當前質數 : 61
印出當前質數 : 67
印出當前質數 : 71
印出當前質數 : 73
印出當前質數 : 79
印出當前質數 : 83
印出當前質數 : 89
印出當前質數 : 97