Cho một số nguyên dương, nhiệm vụ là tạo các ước số lẻ của số đó và tìm tổng các ước số lẻ đó.
Ví dụ
Input: number = 20 Output: tổng ước số lẻ là: 6 Input: number = 18 Output: tổng ước số lẻ là: 13

Vậy kết quả = 1 + 5 = 6
Phương pháp dùng trong chương trình dưới −
- Nhập số để tính tổng ước số lẻ
- Bỏ qua chữ số 0 và 2 vì cả hai là số chẵn, lưu chữ số 1 vì là số lẻ
- Bắt đầu vòng lặp từ 3 đến căn bậc hai của số
- Duyệt cho đến khi number % i trả về 0 và tiếp tục chia số cho i
- Trong vòng lặp, cập nhật biến tạm temp = temp * i
- Cập nhật total = total + temp
- Trả về giá trị biến res cuối cùng và in kết quả
Thuật toán
BẮT ĐẦU
Bước 1: Khai báo hàm tính tổng ước số lẻ
int sum(int num)
Khai báo int res = 1
Vòng lặp While(num % 2 == 0)
num = num / 2
Kết thúc
Vòng lặp For i = 3; i <= sqrt(num); i++
Khai báo int count = 0, total = 1
Khai báo int temp = 1
Vòng lặp while (num % i == 0)
count++
num = num / i
temp *= i
total += temp
Kết thúc
res = res * total
Kết thúc
IF (num >= 2)
res *= (1 + num)
Kết thúc
return res
Bước 2: Trong main()
Khai báo int num = 20
Gọi sum(num)
KẾT THÚC
Ví dụ
#include <bits/stdc++.h>
using namespace std;
// tính tổng ước số lẻ
int sum(int num) {
int res = 1;
while (num % 2 == 0)
num = num / 2;
for (int i = 3; i <= sqrt(num); i++) {
int count = 0, total = 1;
int temp = 1;
while (num % i == 0) {
count++;
num = num / i;
temp *= i;
total += temp;
}
res = res * total;
}
if (num >= 2)
res *= (1 + num);
return res;
}
int main() {
int num = 20;
cout<<"Tổng ước số lẻ là: ";
cout << sum(num);
return 0;
}
Kết quả
Tổng ước số lẻ là: 6