এই সেকশনে আমরা দেখব কীভাবে আমরা একটি সংখ্যার সব জোড় প্রাইম ফ্যাক্টরগুলোর যোগফল দক্ষভাবে বের করতে পারি। একটি সংখ্যা ধরি n = 480, আমাদের এর সব ফ্যাক্টর বের করতে হবে। 480-এর প্রাইম ফ্যাক্টরগুলো হলো 2, 2, 2, 2, 2, 3, 5। সব জোড় ফ্যাক্টরগুলোর যোগফল 2+2+2+2+2 = 10। এই সমস্যা সমাধানের জন্য আমাদের এই নিয়ম ফলো করতে হবে:
যখন সংখ্যা ২ দ্বারা বিভাজ্য, সেগুলো যোগফলে যোগ করুন, এবং সংখ্যাকে ২ দিয়ে বারবার ভাগ করুন।
এখন সংখ্যাটি অবশ্যই বিজোড় হবে। তাই আমরা আর কোনো ফ্যাক্টর পাব না যা জোড়। তাই সেগুলো ইগনোর করুন।
বেশতর আইডিয়ার জন্য অ্যালগরিদম দেখি।
অ্যালগরিদম
printPrimeFactors(n)
begin
sum := 0
while n is divisible by 2, do
sum := sum + 2
n := n / 2
done
end
উদাহরণ
#include<iostream>
using namespace std;
int sumEvenFactors(int n){
int i, sum = 0;
while(n % 2 == 0){
sum += 2;
n = n/2; // ২ দিয়ে ভাগ করে n কমানো
}
return sum;
}
main() {
int n;
cout << "Enter a number: ";
cin >> n;
cout << "Sum of all even prime factors: " << sumEvenFactors(n);
}
আউটপুট
Enter a number: 480 Sum of all even prime factors: 10