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

Chương trình C++ tìm tổng ước số lẻ của một số


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

Chương trình C++ tìm tổng ước số lẻ của một số

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