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

C++-এ জেকেনডর্ফের থিওরেম (Zeckendorf's Theorem) প্রোগ্রাম


এখানে আমরা দেখব কীভাবে চেক করা যায় দেওয়া যোগফল কিছু নন-নেইবারিং ফিবোনাচ্চি সংখ্যা যোগ করে পাওয়া যায় কিনা, যদি হয় তবে সংখ্যাগুলো কী। উদাহরণস্বরূপ, যদি দেওয়া যোগফল ১০ হয়, এটি ৮ এবং ২-এর যোগফল। ৮ এবং ২ উভয় ফিবোনাচ্চি টার্ম এবং সেগুলো এডজেসেন্ট নয়। অ্যালগরিদম দেখে আইডিয়া নেওয়া যাক।

অ্যালগরিদম

nonNeighbourFibo(sum)

Begin
    while sum > 0, do
        fibo := sum-এর চেয়ে বড় না এমন সবচেয়ে বড় ফিবোনাচ্চি টার্ম
        print fibo
        sum := sum - fibo
    done
End

উদাহরণ

#include<iostream>
using namespace std;
int fibonacci(int n) {
    if (n == 0 || n == 1)
        return n;
    // n-এর চেয়ে ছোট সবচেয়ে বড় ফিবোনাচ্চি নম্বর পাওয়া
    int prev = 0, curr = 1, next = 1;
    while (next <= n) {
        prev = curr;
        curr = next;
        next = prev + curr;
    }
    return curr;
}
void nonNeighbourFibo(int sum) {
    while (sum > 0) {
        int fibo = fibonacci(sum);
        cout << fibo << " ";
        sum = sum - fibo;
    }
}
int main() {
    int sum = 120;
    cout << "Sum is same as Non-adjacent Fibonacci terms: ";
    nonNeighbourFibo(sum);
}

আউটপুট

Sum is same as Non-adjacent Fibonacci terms: 89 21 8 2

  1. C++ প্রোগ্রাম: একটি নম্বরের অড ফ্যাক্টরগুলোর যোগফল বের করা

  2. C++-এ পিরামিডের ভলিউম বের করার প্রোগ্রাম

  3. C++-এ কুইকসর্ট (QuickSort) প্রোগ্রাম

  4. C++-এ প্রথম n প্রাকৃতিক সংখ্যার বর্গের যোগফল (Sum of Squares)