Cho trước với một số nguyên dương và nhiệm vụ là tạo ra các thừa số lẻ của một số và tìm ra tổng các thừa số lẻ đã cho.
Ví dụ
Input-: number = 20 Output-: sum of odd factors is: 6 Input-: number = 18 Output-: sum of odd factors is: 13
Vì vậy, kết quả =1 + 5 =6
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau -
- Nhập số để tính tổng các thừa số lẻ của số đó
- Bỏ qua chữ số 0 và 2 vì cả hai đều là chữ số chẵn và lưu chữ số 1 vì nó là chữ số lẻ
- Bắt đầu vòng lặp từ 3 cho đến căn bậc hai của một số
- Di chuyển cho đến khi số% i trả về 0 và tiếp tục chia số với giá trị của i
- Trong vòng lặp, hãy tiếp tục đặt giá trị của biến tạm thời thành temp =temp * i
- Đặt tổng số thành tổng + nhiệt độ
- Trả về giá trị của biến res cuối cùng và in kết quả
Thuật toán
START Step 1-> Declare function to calculate sum of odd factors int sum(int num) declare int res = 1 Loop While(num % 2 == 0) set num = num / 2 End Loop For int i = 3 and i <= sqrt(num) and i++ declare int count = 0 and total = 1 declare int temp = 1 Loop while (num % i == 0) count++ set num = num / i set temp *= i set total += temp End set res = res*total End IF (num >= 2) set res *= (1 + num) End return res Step 2-> In main() Declare int num = 20 call sum(num) STOP
Ví dụ
#include <bits/stdc++.h> using namespace std; //calculate sum of odd factors 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<<"sum of odd factors is : "; cout <<sum(num); return 0; }
Đầu ra
sum of odd factors is : 6