輸入任一正整數,印出小於該正整數所有能被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 次。