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

經典 C 語言入門範例:九九乘法表與素數篩選

     編輯:關於C

C 語言學習的最佳捷徑是動手敲代碼。本文提供兩個經典入門程序——九九乘法表輸出與 100 以內素數篩選,代碼規範、邏輯清晰,適合初學者研讀、修改、擴展。

範例一:九九乘法表

利用雙層嵌套循環,外層控制行(被乘數 1~9),內層控制列(乘數 1~行號),格式化輸出每個乘法算式。

#include <stdio.h>

int main(void) {
    printf("九九乘法表\\n");
    for (int i = 1; i <= 9; ++i) {
        for (int j = 1; j <= i; ++j) {
            printf("%d×%d=%-3d ", j, i, j * i); // %-3d 左對齊佔3寬,對齊美觀
        }
        putchar('\\n');
    }
    return 0;
}

關鍵點:

  • 內層循環條件 j <= i 實現下三角輸出;
  • %-3d 保證結果欄寬固定、左對齊,列對齊整齊;
  • 使用 putchar('\\n') 比 printf("\\n") 更輕量。

範例二:100 以內素數(函數模塊化版)

將判斷素數邏輯封裝為 isPrime 函數,主流程調用 allPrimes 遍歷輸出,展示模塊化設計思想。

#include <stdio.h>
#include <stdbool.h> // C99 引入 bool 類型

// 判斷素數:優化至 sqrt(n)
bool isPrime(int n) {
    if (n <= 1) return false;
    if (n <= 3) return true;     // 2, 3 是素數
    if (n % 2 == 0 || n % 3 == 0) return false; // 排除 2、3 的倍數

    // 6k±1 優化:素數必在 6k±1 形式(k≥1)
    for (int i = 5; i * i <= n; i += 6) {
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
    }
    return true;
}

void allPrimes(int low, int high) {
    for (int i = low; i <= high; ++i) {
        if (isPrime(i))
            printf("%d ", i);
    }
    putchar('\\n');
}

int main(void) {
    printf("100 以內的素數:\\n");
    allPrimes(1, 100);
    return 0;
}

進階優化說明:

  1. 試除法優化:只需試除到 sqrt(n),因若 n = a×b 則至少一因子 ≤ sqrt(n)。
  2. 6k±1 模式:大於 3 的素數均相鄰於 6 的倍數(如 5,7 / 11,13 / 17,19),步長 6 試除 i 和 i+2,減少 2/3 迭代。
  3. 更高效算法:若範圍大(如 10^6),推薦 埃拉托斯特尼篩法,時間複雜度 O(n log log n)。

擴展練習建議

  1. 修改乘法表為 12×12 或任意 N×N;
  2. 實現「輸入上限 N,輸出 N 以內所有素數」;
  3. 對比試除法與篩法在不同 N 下的運行時間;
  4. 嘗試用位運算優化篩法存儲空間(每個數用 1 bit)。

總結

這兩個範例雖簡單,但涵蓋了循環控制、函數封裝、格式化輸出、算法優化等核心技能。建議初學者:手敲、跑通、改參數、觀察輸出、再優化,養成「代碼即文檔、邏輯清晰可驗證」的良好習慣。

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