√10を求めるプログラムを作る

2024/11/13に公開

C言語で作成します

√の計算はどんどん範囲を絞り込んで行って求めていきます。イメージはこんな感じです。

#include <stdio.h>

double sqrt_approx(double n, double tolerance) {
    double low = 0;        // 最小値
    double high = n;       // 最大値
    double mid;            // 中間値

    while ((high - low) > tolerance) {
        mid = (low + high) / 2;
        if (mid * mid > n) {
            high = mid;    // 探索範囲を小さい側に絞る
        } else {
            low = mid;     // 探索範囲を大きい側に絞る
        }
    }

    return (low + high) / 2; // 最終的な近似値
}

int main() {
    double n = 10;           // 対象の数値
    double tolerance = 0.000001; // 許容誤差

    double result = sqrt_approx(n, tolerance);

    printf("The square root of %f is approximately %f\n", n, result);
    return 0;
}

Discussion