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

C++-এ এলিকোয়ট সিকোয়েন্স (Aliquot Sequence)

এলিকোয়ট সিকোয়েন্স (Aliquot sequence) হলো একটি বিশেষ সংখ্যা সিকোয়েন্স। সিকোয়েন্সটি নিজস্ব নম্বর থেকে শুরু হয় এবং পরবর্তী নম্বরটি পिछले টার্মের সঠিক ভাজকগুলোর যোগফল।

উদাহরণ দিয়ে বুঝি:

Input: 8
Output: 8 7 1 0
Explanation:
    ৮-এর সঠিক ভাজক: 4, 2, 1। যোগফল = 7
    ৭-এর সঠিক ভাজক: 1। যোগফল = 1
    ১-এর সঠিক ভাজক: ০। যোগফল = 0

পারফেক্ট নম্বর হলো যেটির এলিকোয়ট সিকোয়েন্স দৈর্ঘ্য ১। উদাহরণ: ৬ একটি পারফেক্ট নম্বর।

অ্যামিকেবল নম্বর (Amicable number) হলো যেটির এলিকোয়ট সিকোয়েন্স দৈর্ঘ্য ২। উদাহরণ: ১ একটি অ্যামিকেবল নম্বর।

সোশিয়েবল নম্বর (Sociable number) হলো যেটির এলিকোয়ট সিকোয়েন্স দৈর্ঘ্য ৩। উদাহরণ: ৭ একটি সোশিয়েবল নম্বর।

এলিকোয়ট সিকোয়েন্স ক্যালকুলেট করতে হলে টার্মের সঠিক ভাজক বের করতে হয়। এতে ডিভিশন অ্যালগরিদম ব্যবহার করা হয়।

আলগরিদম

Step 1: নম্বরটি ইনিশিয়ালাইজ করুন।
Step 2: নম্বরের সব সঠিক ভাজক বের করুন।
Step 3: সব সঠিক ভাজকের যোগফল বের করুন।
Step 4: যোগফল প্রিন্ট করুন এবং স্টেপ ১-এ ফিরে যান এই যোগফলকে নতুন নম্বর হিসেবে।

C++ প্রোগ্রাম উদাহরণ

#include <bits/stdc++.h>
using namespace std;

int Sumfactorial(int n){
    int sum = 0;
    for (int i=1; i<=sqrt(n); i++){
        if (n%i==0){
            if (n/i == i)
                sum = sum + i;
            else{
                sum = sum + i;
                sum = sum + (n / i);
            }
        }
    }
    return sum - n;
}

void Aliquotsequence(int n){
    printf("%d ", n);
    unordered_set<int> s;
    s.insert(n);
    int next = 0;
    while (n > 0){
        n = Sumfactorial(n);
        if (s.find(n) != s.end()){
            cout << "\nRepeats with " << n;
            break;
        }
        cout << n << " ";
        s.insert(n);
    }
}

int main(){
    Aliquotsequence(45);
    return 0;
}

আউটপুট

45 33 15 9 4 3 1 0
  1. Frugal সংখ্যা চেক করা (C++)

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

  3. ফিবোনাচ্চি সংখ্যাগুলোর বর্গের যোগফল C++-এ

  4. C++-এ অ্যালিকোট সম (Aliquot Sum)