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

C語言計算交替調和級數前100項:1/1-1/2+1/3-1/4...

     編輯:關於C語言

C語言計算交替調和級數部分和:奇偶分項求和法

計算 1 - 1/2 + 1/3 - 1/4 + ... + 1/99 - 1/100,展示浮點數累加與奇偶項分離處理技巧。

數學本質

級數 ∑(-1)^(n+1)/n 收斂於 ln(2) ≈ 0.693147,前 100 項部分和逼近此值。

代碼實現


#include 

int main() {
    double sum = 0.0;
    for (int i = 1; i <= 100; i++) {
        if (i % 2 == 1)      // 奇數項:正號
            sum += 1.0 / i;
        else                 // 偶數項:負號
            sum -= 1.0 / i;
    }
    printf("結果:%lf\n", sum);
    return 0;
}

關鍵細節

  1. 浮點除法:1.0 / i 強制雙精度運算,避免整數除法截斷
  2. 累加變量類型:double 提供足夠精度(15-17 位有效數字)
  3. 奇偶判斷:i % 2 確定符號

輸出結果

結果:0.688172

接近 ln(2),誤差約 0.005,隨項數增加收斂。

替代寫法


// 符號變量法
double sum = 0, sign = 1.0;
for (int i = 1; i <= 100; i++) {
    sum += sign / i;
    sign = -sign;
}

// 分離求和法
double odd_sum = 0, even_sum = 0;
for (int i = 1; i <= 100; i += 2) odd_sum += 1.0 / i;
for (int i = 2; i <= 100; i += 2) even_sum += 1.0 / i;
double sum = odd_sum - even_sum;

數值計算提示

  • 浮點數累加順序影響精度(由小到大較好)
  • 大規模求和考慮 Kahan 求和算法補償誤差
  • %lf 輸出 double,%f 亦可(printf 統一處理)

此例強化浮點運算、循環累加、條件分支核心技能。

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