একটি পজিটিভ ইন্টিজার দেওয়া আছে এবং টাস্ক হলো সেটির অড ফ্যাক্টরগুলো বের করে তাদের যোগফল বের করা।
উদাহরণ
ইনপুট: number = 20 আউটপুট: sum of odd factors is: 6 ইনপুট: number = 18 আউটপুট: sum of odd factors is: 13

তাই রেজাল্ট = 1 + 5 = 6
নিচের প্রোগ্রামে ব্যবহৃত অ্যাপ্রোচ −
- অড ফ্যাক্টর যোগফল বের করার জন্য নম্বর ইনপুট নিন
- ডিজিট ০ এবং ২ উপেক্ষা করুন কারণ দুটোই ইভেন ডিজিট এবং ডিজিট ১ স্টোর করুন কারণ এটি অড ডিজিট
- লুপ ৩ থেকে নম্বরের বর্গমূল পর্যন্ত শুরু করুন
- নম্বর % i ০ রিটার্ন করলে ট্রাভার্স করুন এবং নম্বরকে i-দিয়ে ভাগ করতেই থাকুন
- লুপে টেম্পোরারি ভেরিয়েবল temp = temp * i সেট করুন
- total = total + temp সেট করুন
- ফাইনাল res ভেরিয়েবলের ভ্যালু রিটার্ন করুন এবং রেজাল্ট প্রিন্ট করুন
অ্যালগরিদম
শুরু
ধাপ ১→ অড ফ্যাক্টরগুলোর যোগফল ক্যালকুলেট করার ফাংশন ডিক্লেয়ার
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) সেট
IF শেষ
return res
ধাপ ২→ main()-এ
int num = 20 ডিক্লেয়ার
sum(num) কল
শেষ
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
// অড ফ্যাক্টরগুলোর যোগফল ক্যালকুলেট করা
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;
}
আউটপুট
sum of odd factors is : 6