首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 流程控制綜合示例(三):99乘法表、圖形打印與質數判斷優化

     編輯:Java 相關知識

5.6.1 綜合示例進階:三大經典輸出與算法優化

5.6.1.5 99 乘法表:對齊輸出的格式化藝術

規律: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.6.1.6 等腰三角形打印:雙重循環構建視覺結構

目標: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();
}

兩種思路本質相同:**先算總字符數,再定分界點**。

5.6.1.7 質數判斷:從 O(n) 到 O(√n) 的算法躍遷

定義:只能被 1 和自身整除的自然數(最小質數 2)

基礎版:試除法 2 到 n-1

int n = 23;
boolean isPrime = true;
for (int i = 2; i < n; i++) {
    if (n % i == 0) { isPrime = false; break; }
}

優化版:只需判斷到 √n

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、寬度控制
  • 幾何規律建模:行號、列號、空格數、字符數的數學關係
  • 算法複雜度優化:數學性質縮減搜索空間(質數判斷從 O(n) → O(√n))
  • 代碼位置敏感性:同一行代碼前後位置改變輸出結果

下一節將整理綜合練習題,進一步鞏固實戰能力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved