輸入任一正整數,印出小於該正整數所有能被16整除之數:


import java.util.Scanner;
public class P538 {
    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        System.out.println("請輸入任一正整數:");
        int a = scn.nextInt();
        int i = 1, j = 1;
        scn.close();

        // for迴圈
        // 從1累加執行到a,逐次判斷,如能被16整除,輸出該數字i。

        System.out.println("小於 " + a + " 能被16整除之數有(for迴圈):");
        for (i = 1; i <= a; i++) {
            if (i % 16 == 0) {
                System.out.print(i + " ");
            }
        }
        System.out.println("\n");
        System.out.println("for迴圈共執行 " + (i-1) + " 次。");
        System.out.println();

        // while迴圈
        // for迴圈的缺點是,必須從頭執行到最後,假設輸入的數字是100,
        // 迴圈執行100次,但能被16整除的只有6個,雖執行結果一樣,效率並不好,
        // 能被16整除必是16之倍數,只要將16之倍數輸出即可,乘積大於a停止迴圈。

        System.out.println("小於 " + a + " 能被16整除之數有(while迴圈):");
        while (16 * j <= a) {
            System.out.print((j * 16) + " ");
            j++;
        }
        System.out.println("\n");
        System.out.println("while迴圈共執行 " + j + " 次。");
    }
}

 

輸出結果(輸入100):
請輸入任一正整數:
100
小於 100 能被16整除之數有(for迴圈):
16 32 48 64 80 96 

for迴圈共執行 100 次。

小於 100 能被16整除之數有(while迴圈):
16 32 48 64 80 96 

while迴圈共執行 7 次。

arrow
arrow

    ALVIN 發表在 痞客邦 留言(0) 人氣()