কম্পিউটার

C++ এ প্রায় নিখুঁত সংখ্যা


প্রায় নিখুঁত সংখ্যা সর্বনিম্ন ঘাটতি সংখ্যা বা সামান্য ত্রুটিপূর্ণ সংখ্যা হল এমন একটি সংখ্যা যেখানে সমস্ত ভাজকের যোগফল (1 এবং সংখ্যাটি নিজেই যোগ করা) সমান হওয়া উচিত 2n-1 .

এই সমস্যায়, আমরা একটি অ্যালগরিদম সংজ্ঞায়িত করব যে একটি সংখ্যা প্রায় একটি নিখুঁত সংখ্যা কিনা তা পরীক্ষা করতে।

ধারণাটি আরও ভালভাবে বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

Input : 16
Output : yes
Explanation :
Divisors of 16 are 1, 2, 4, 8, 16.
Sum = 1 + 2 + 4 + 8 + 16 = 31
n = 16 ; 2n-1 = 2*16 - 1 = 31

Input : 12
Output : No
Explanation :
Divisors of 12 are 1, 2, 3, 4, 6, 12.
Sum = 1+2+3+4+6+12 = 26
n = 12 ; 2n-1 = 2*12 - 1 = 23

এখন, প্রদত্ত সংখ্যাটি একটি প্রায় নিখুঁত সংখ্যা কিনা তা পরীক্ষা করতে সমস্যা বা না প্রায় নিখুঁত সংখ্যার যুক্তি ব্যবহার করে সমাধান করা হয় যেমন যদি সংখ্যাটির সমস্ত ভাজকের যোগফল 2n -1 এর সমান হয় .

অ্যালগরিদম

Step 1 : Calculate the sum of all divisors of the number.
Step 2 : Calculate the value of val = 2n-1.
Step 3 : if sum == val -> print “YES”
Step 4 : else print “NO”

উদাহরণ

#include <iostream>
using namespace std;
void almostPerfectNumber(int n) ;
int main(){
   int n = 16;
   cout<<"Is "<<n<<" an almost perfect number ?\n";
   almostPerfectNumber(n) ;
}
void almostPerfectNumber(int n){
   int divisors = 0;
   for (int i = 1; i <= n; i++) {
      if (n % i == 0)
         divisors += i;
   }
   if (divisors == 2 * n - 1)
      cout<<"YES";
   else
   cout<<"NO";
}

আউটপুট

Is 16 an almost perfect number ?
YES

  1. C++ এ মিতব্যয়ী নম্বর

  2. C++ পেন্টাটোপ নম্বর

  3. C++ এ পারফেক্ট স্কোয়ার

  4. C++ এ অ্যাডাম নম্বর