इस समस्या में, हमें N संख्याओं का एक सेट और एक संख्या X दी गई है। और हमें ऐरे से उन सभी संख्याओं को प्रिंट करना है जिनके अभाज्य गुणनखंडों का समुच्चय X के अभाज्य गुणनखंडों के समुच्चय का उपसमुच्चय हो।
उदाहरण
Input: X = 30, array = {2, 3, 6, 10, 12}
Output: 2 3 6
इस समस्या को हल करने के लिए, हमें ऐरे के एलिमेंट्स को पार करना होगा। और इस एलिमेंट को (एलिमेंट, x) के gcd से विभाजित करना होगा। विभाजन को तब तक दोहराएं जब तक gcd 1 न हो जाए। और शेष संख्या प्रिंट करें।
उदाहरण
#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