অলমোস্ট পারফেক্ট নম্বর (Almost Perfect Number) কে লীস্ট ডিফিশিয়েন্ট নম্বর বা স্লাইটলি ডিফেক্টিভ নম্বরও বলা হয়। এটি এমন একটি নম্বর যার সব ভাজকের যোগফল (১ এবং নিজসহ) 2n-1 এর সমান হয়।
এই সমস্যায় আমরা একটি অ্যালগরিদম ডিফাইন করব যেন কোনো নম্বর অলমোস্ট পারফেক্ট নম্বর কিনা তা চেক করা যায়।
উদাহরণ দিয়ে বুঝি:
Input: 16 Output: yes Explanation: 16-এর ভাজক: 1, 2, 4, 8, 16। যোগফল = 1+2+4+8+16 = 31 n = 16; 2n-1 = 2*16 - 1 = 31 Input: 12 Output: No Explanation: 12-এর ভাজক: 1, 2, 3, 4, 6, 12। যোগফল = 26 n = 12; 2n-1 = 23
এখন, কোনো নম্বর অলমোস্ট পারফেক্ট নম্বর কিনা তা চেক করার লজিক হলো: যদি নম্বরের সব ভাজকের যোগফল 2n - 1 এর সমান হয়।
আলগরিদম
Step 1: নম্বরের সব ভাজকের যোগফল বের করুন। Step 2: val = 2n-1 এর মান বের করুন। Step 3: যদি sum == val হয় -> print "YES" Step 4: অন্যথায় print "NO"
C++ প্রোগ্রাম উদাহরণ
#include <iostream>
using namespace std;
void almostPerfectNumber(int n) ;
int main(){
int n = 16;
cout<<"Is "<
আউটপুট
Is 16 an almost perfect number? YES