এই সমস্যায় N সংখ্যার একটি সেট এবং একটি সংখ্যা X দেওয়া আছে। এবং আমাদের অ্যারের যেসব সংখ্যার প্রাইম ফ্যাক্টর সেট X-এর প্রাইম ফ্যাক্টর সেটের সাবসেট সেগুলো প্রিন্ট করতে হবে।
উদাহরণ
ইনপুট: X = 30, array = {2, 3, 6, 10, 12}
আউটপুট: 2 3 6
এই সমস্যাটি সমাধানের জন্য অ্যারের উপাদানগুলো ট্রাভার্স করতে হবে। এবং এই উপাদানটিকে gcd দিয়ে ভাগ করতে হবে (উপাদান, x)। এই ভাগ প্রক্রিয়া চলবে যতক্ষণ না gcd ১ হয়। এবং অবশিষ্ট সংখ্যাটি প্রিন্ট করা হবে।
বাস্তবায়ন
#include <bits/stdc++.h>
using namespace std;
void printPrimeSet(int a[], int n, int x) {
bool flag = false;
for (int i = 0; i < n; i++) {
int num = a[i];
int g = __gcd(num, x);
while (g != 1) {
num /= g;
g = __gcd(num, x);
}
if (num == 1) {
flag = true;
cout << a[i] << " ";
}
}
if (!flag)
cout << "There are no such numbers";
}
int main() {
int x = 60;
int a[] = { 2, 5, 10, 7, 17 };
int n = sizeof(a) / sizeof(a[0]);
cout << "Numbers whose set of prime numbers is subset of set of prime factor of " << x << "\n";
printPrimeSet(a, n, x);
return 0;
}
আউটপুট
Numbers whose set of prime numbers is a subset of the set of prime factor of 60 2 5 10