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

C語言經典入門範例:九九乘法表與 100 以內質數篩選(函數模組化版)

     編輯:關於C語言

範例一:九九乘法表

#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, i * j);
        }
        putchar('\n');
    }
    return 0;
}

重點:巢狀迴圈、%-3d 左對齊固寬輸出、putchar 單字元輸出效率高。

範例二:100 以內質數(函數模組化)

#include <stdio.h>
#include <stdbool.h>

bool isPrime(int n);
void printPrimes(int low, int high);

int main(void) {
    printf("100 以內質數:\n");
    printPrimes(2, 100);
    putchar('\n');
    return 0;
}

void printPrimes(int low, int high) {
    for (int i = low; i <= high; i++) {
        if (isPrime(i)) printf("%d ", i);
    }
}

bool isPrime(int n) {
    if (n < 2) return false;
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0) return false;
    }
    return true;
}

關鍵技術點總結

概念說明
函數原型宣告在 main 前宣告,支援分離編譯
布林型別C99 <stdbool.h> 提供 bool/true/false
試除法優化只需測試至 √n,i*i <= n 避免浮點
模組化原則單一職責:判斷邏輯與列印分離,利於測試與複用

進階優化:埃拉托斯特尼篩法

void sieve(int n) {
    bool *isPrime = calloc(n + 1, sizeof(bool));
    for (int i = 2; i <= n; i++) isPrime[i] = true;
    for (int p = 2; p * p <= n; p++) {
        if (isPrime[p]) {
            for (int mult = p * p; mult <= n; mult += p)
                isPrime[mult] = false;
        }
    }
    for (int i = 2; i <= n; i++)
        if (isPrime[i]) printf("%d ", i);
    free(isPrime);
}

時間複雜度 O(n log log n),遠優於試除法 O(n√n),適合大範圍質數生成。

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