কম্পিউটার টিউটোরিয়াল

C++-এ অলমোস্ট পারফেক্ট নম্বর (সামান্য পূর্ণসংখ্যা নয়)

অলমোস্ট পারফেক্ট নম্বর (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
  1. Frugal সংখ্যা চেক করা (C++)

  2. C++ দিয়ে পেন্টাটপ (Pentatope) সংখ্যা বের করা

  3. C++-এ পূর্ণবর্গ সংখ্যা (Perfect Squares - Least Number of Perfect Squares Summing to n)

  4. C++-এ অ্যাডাম সংখ্যা (Adam Number) চেক করার পদ্ধতি