Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình C++ tính tổng ước số chẵn của một số

Tìm tổng các ước số chẵn (even factors) của một số n. Ví dụ n=480, ước nguyên tố: 2,2,2,2,2,3,5. Tổng ước chẵn = 2+2+2+2+2 = 10.

Quy tắc

  • Khi n chia hết cho 2, cộng 2 vào tổng, chia n cho 2 liên tục.
  • Sau khi hết thừa số 2, n trở thành số lẻ → không còn ước chẵn nào.

Thuật toán

sumEvenFactors(n):
    sum = 0
    while n % 2 == 0:
        sum += 2
        n = n / 2
    return sum
end

Code ví dụ

#include <iostream>
using namespace std;

int sumEvenFactors(int n) {
    int sum = 0;
    while(n % 2 == 0) {
        sum += 2;
        n = n / 2;
    }
    return sum;
}

int main() {
    int n;
    cout << "Nhap so: ";
    cin >> n;
    cout << "Tong cac uoc nguyen to chan: " << sumEvenFactors(n);
    return 0;
}

Kết quả

Nhap so: 480
Tong cac uoc nguyen to chan: 10

⚠️ Lưu ý quan trọng

Code trên tính tổng các thừa số nguyên tố chẵn (chỉ là số 2), KHÔNG phải tổng tất cả ước số chẵn.

Nếu cần tổng TẤT CẢ ước số chẵn (ví dụ 12: ước chẵn 2,4,6,12 → tổng=24), dùng phương pháp phân tích thừa số nguyên tố đầy đủ (xem bài 1003082127).

Code đúng cho "Tổng tất cả ước chẵn"

int sumAllEvenDivisors(int n) {
    if (n % 2 != 0) return 0;
    int sum = 0;
    for (int i = 2; i <= n; i += 2) {
        if (n % i == 0) sum += i;
    }
    return sum;
}
// Hoặc dùng công thức toán học O(sqrt(n)) như bài 1003082127