S SmartDocs
Chuỗi bài: C++ cpp 53 dòng · Cập nhật 2026-04-03

math_utils.cpp

C++/Part4_現代CPP/Ch19_命名空間與多檔案專案/header_example/math_utils.cpp

// math_utils.cpp — MathUtils 類別的實作檔
// 編譯:g++ -std=c++17 -Wall -c math_utils.cpp

#include "math_utils.h"
#include <cmath>

double MathUtils::add(double a, double b) {
    return a + b;
}

double MathUtils::subtract(double a, double b) {
    return a - b;
}

double MathUtils::multiply(double a, double b) {
    return a * b;
}

double MathUtils::divide(double a, double b) {
    if (b == 0.0)
        throw std::invalid_argument("除數不可為零");
    return a / b;
}

long long MathUtils::factorial(int n) {
    if (n < 0)
        throw std::invalid_argument("階乘的參數不可為負數");
    long long result = 1;
    for (int i = 2; i <= n; ++i)
        result *= i;
    return result;
}

bool MathUtils::isPrime(int n) {
    if (n < 2) return false;
    if (n == 2) return true;
    if (n % 2 == 0) return false;
    for (int i = 3; i <= static_cast<int>(std::sqrt(n)); i += 2) {
        if (n % i == 0) return false;
    }
    return true;
}

int MathUtils::gcd(int a, int b) {
    a = std::abs(a);
    b = std::abs(b);
    while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

Bài viết liên quan