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

C++-এ ফ্লোটিং পয়েন্ট সংখ্যার GCD বের করার প্রোগ্রাম


সমস্যা বিবরণ

দুটি ফ্লোটিং পয়েন্ট সংখ্যা দেওয়া থাকলে, তাদের GCD বের করুন। ইউক্লিডিয়ান অ্যালগরিদম ফ্লোটিং পয়েন্টে কাজ করে যদি মডুলো অপারেশন সঠিক হয়।

সমাধানের পদ্ধতি

  1. যদি a < b হয়, সোয়াপ করুন।
  2. যদি |b| < 0.001 হয় (প্রায় ০), তবে a রিটার্ন করুন।
  3. অন্যথায়: gcd(b, a - floor(a/b) * b) রিকার্সিভ কল।

C++ কোড উদাহরণ

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

double gcd(double a, double b) {
    if (a < b) return gcd(b, a);
    if (fabs(b) < 0.001) return a;
    else return gcd(b, a - floor(a / b) * b);
}

int main() {
    double a = 1.20, b = 22.5;
    cout << gcd(a, b);
    return 0;
}

আউটপুট

0.3

ব্যাখ্যা

1.20 এবং 22.5 → ২২.৫ / ১.২০ = ১৮.৭৫ → ফ্লোর ১৮

রিমেইন্ডার = 22.5 - 18×1.20 = 22.5 - 21.6 = 0.9

gcd(1.20, 0.9) → 1.20/0.9 = 1.33 → ফ্লোর ১

রিমেইন্ডার = 1.20 - 1×0.9 = 0.3

gcd(0.9, 0.3) → 0.9/0.3 = 3 → রিমেইন্ডার 0 → GCD = 0.3

জটিলতা

  • সময়: O(log min(a,b)) প্রায়
  • স্থান: O(log min(a,b)) রিকার্সন স্ট্যাক
  1. C++ প্রোগ্রাম: LCM (লঘুতম সাধারণ গুণিতক) নির্ণয়

  2. C++ প্রোগ্রাম: GCD (মহত্তম সাধারণ ভাজক) নির্ণয়

  3. C++ প্রোগ্রাম: তিনটি সংখ্যার মধ্যে বড়টি খুঁজে বের করা

  4. জাভা প্রোগ্রাম: দুটি সংখ্যার GCD (মহत्तম সাধারণ ভাজক) নির্ণয়