কম্পিউটার

C++ এ একটি প্রাকৃতিক সংখ্যার সমস্ত ভাজকের যোগফল নির্ণয় কর


এই সমস্যায়, আমাদের একটি প্রাকৃতিক সংখ্যা N দেওয়া হয়েছে। আমাদের কাজ হল একটি প্রাকৃতিক সংখ্যার সমস্ত ভাজকের যোগফল বের করা .

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

Input : N = 12
Output : 55

ব্যাখ্যা

The divisors of 12 are 1, 2, 3, 4, 6, 12
Sum of divisors = (1) + (1 + 2) + (1 + 3) + (1 + 2 + 4) + (1 + 2 + 3 + 6) + (1 + 2 + 3 + 4 + 6 + 12) = 1 + 3 + 4 + 7 + 12 + 28 = 55

সমাধান পদ্ধতি

সমস্যার একটি সহজ সমাধান হল N এর ফ্যাক্টরাইজেশন ব্যবহার করা। প্রাইম ফ্যাক্টরাইজেশন ব্যবহার করে আমরা সব ভাজকের ভাজকের যোগফল বের করতে পারি। এখানে, আমরা প্রতিটি উপাদানের প্রধান ফ্যাক্টরাইজেশন খুঁজে পাব।

উদাহরণ

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম

#include<bits/stdc++.h>
using namespace std;
int findSumOfDivisorsOfDivisors(int n) {
   map<int, int> factorCount;
   for (int j=2; j<=sqrt(n); j++) {
      int count = 0;
      while (n%j == 0) {
         n /= j;
         count++;
      }
      if (count) 
         factorCount[j] = count;
   }
   if (n != 1)
      factorCount[n] = 1;
   int sumOfDiv = 1;
   for (auto it : factorCount) {
      int power = 1; 
      int sum = 0;
      for (int i=it.second+1; i>=1; i--) {
         sum += (i*power);
         power *= it.first;
      }
      sumOfDiv *= sum;
   }
   return sumOfDiv;
}
int main() {
   int n = 12;
   cout<<"The sum of divisors of all divisors is "<<findSumOfDivisorsOfDivisors(n);
   return 0;
}

আউটপুট

The sum of divisors of all divisors is 55

  1. ফিবোনাচি সংখ্যার ন্যূনতম সংখ্যা খুঁজুন যার যোগফল C++ এ K

  2. C++ এ লুকানো নম্বর খুঁজে বের করার জন্য প্রোগ্রাম

  3. C++-এ সমস্ত সাব-সিকোয়েন্সের যোগফলের যোগফল নির্ণয় করুন

  4. প্রথম প্রাকৃতিক সংখ্যাটি খুঁজুন যার ফ্যাক্টরিয়াল C++ এ x দ্বারা বিভাজ্য