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