規律:9 行,第 row 行有 row 個乘積,值 = row × col
for (int row = 1; row <= 9; row++) {
for (int col = 1; col <= row; col++) {
System.out.print(row * col);
System.out.print(' ');
}
System.out.println();
}
for (int row = 1; row <= 9; row++) {
for (int col = 1; col <= row; col++) {
if (row * col < 10) System.out.print(' '); // 一位數前補空格
System.out.print(row * col);
System.out.print(' ');
}
System.out.println();
}
關鍵洞察:代碼位置決定邏輯——補空格必須在輸出數值**之前**。
目標:5 行,第 row 行:5-row 空格 + 2*row-1 星號
for (int row = 1; row <= 5; row++) {
for (int c = 0; c < 5 - row; c++) System.out.print(' ');
for (int c = 0; c < 2*row - 1; c++) System.out.print('*');
System.out.println();
}
for (int row = 1; row <= 5; row++) {
for (int col = 0; col < 4 + row; col++) {
if (col < 5 - row) System.out.print(' ');
else System.out.print('*');
}
System.out.println();
}
兩種思路本質相同:**先算總字符數,再定分界點**。
定義:只能被 1 和自身整除的自然數(最小質數 2)
int n = 23;
boolean isPrime = true;
for (int i = 2; i < n; i++) {
if (n % i == 0) { isPrime = false; break; }
}
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) { isPrime = false; break; }
}
若 n = a × b,則 a、b 必有一個 ≤ √n。故無約數於 [2, √n] 即為質數。
System.out.println(isPrime ? "是質數" : "不是質數");
print vs println、寬度控制下一節將整理綜合練習題,進一步鞏固實戰能力。