প্রায় নিখুঁত সংখ্যা সর্বনিম্ন ঘাটতি সংখ্যা বা সামান্য ত্রুটিপূর্ণ সংখ্যা হল এমন একটি সংখ্যা যেখানে সমস্ত ভাজকের যোগফল (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