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

বিভাজক থেকে সংখ্যা খুঁজে বের করা C++-এ

এই সমস্যায়, আমাদের একটি অ্যারে divisors[] দেওয়া আছে যাতে N সংখ্যক পূর্ণসংখ্যা আছে যা একটি সংখ্যা Num এর বিভাজক। আমাদের কাজ হল তার বিভাজক থেকে সংখ্যা খুঁজে বের করা।

বিভাজক অ্যারেতে ১ এবং সংখ্যাটি নিজে অন্তর্ভুক্ত নয়।

উদাহরণ

ইনপুট

divisors[] = {3, 25, 5, 15}

আউটপুট

75

ব্যাখ্যা

সংখ্যা ৭৫-এর বিভাজক হল {3, 25, 5, 15}

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

সমস্যাটি সমাধানের জন্য, আমাদের সবচেয়ে ছোট এবং সবচেয়ে বড় বিভাজক ব্যবহার করে সংখ্যা Num বের করতে হবে।

Num = smallest × largest

এ জন্য, আমাদের divisors[] অ্যারেটি সর্ট করতে হবে এবং তারপর অ্যারেটির প্রথম এবং শেষ ইন্ডেক্সের এলিমেন্টগুলোর গুণফল বের করতে হবে।

সংখ্যা Num এর জন্য, সংখ্যার সব ফ্যাক্টর বের করুন। এবং চেক করুন যে সংখ্যার বিভাজকগুলো বিভাজক অ্যারেতে দিয়ে মিলে যাচ্ছে কিনা। যদি হ্যাঁ, তবে Num রিটার্ন করুন। অন্যথায়, -১ রিটার্ন করুন, যা নির্দেশ করে সংখ্যা খুঁজে পাওয়া যায়নি।

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

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

int findNumberFromDiv(int divisors[], int n) {
    sort(divisors, divisors + n);
    int num = divisors[0] * divisors[n - 1];
    
    int numDiv[2*n];
    int count = 0;
    
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            numDiv[count] = i;
            count++;
            numDiv[count] = num / i;
            count++;
        }
    }
    
    sort(numDiv, numDiv + count);
    
    if (count != n)
        return -1;
    else {
        for (int i = 0; i < count; i++) {
            if (divisors[i] != numDiv[i])
                return -1;
        }
    }
    
    return num;
}

int main() {
    int divisors[] = { 3, 25, 5, 15 };
    int n = sizeof(divisors) / sizeof(divisors[0]);
    cout << "The number is " << findNumberFromDiv(divisors, n);
    return 0;
}

আউটপুট

The number is 75
  1. [1, n] রেঞ্জের সব সংখ্যার ভাজকের সংখ্যা বের করা C++-এ

  2. C++ ব্যবহার করে পেল (Pell) সংখ্যা নির্ণয় করুন

  3. C++-এ n = x + n XOR x সমীকরণের সমাধান সংখ্যা বের করুন

  4. C++-এ দিয়ে गये পয়েন্ট থেকে সম্ভাব্য কোয়াড্রিল্যাটারেল সংখ্যা বের করুন