इस समस्या में, हमें N नंबरों का एक सेट और एक नंबर X दिया जाता है। और हमें उन सभी नंबरों को एरे से प्रिंट करना होता है जिनके अभाज्य गुणनखंडों का सेट सेट का सबसेट होता है। X के अभाज्य गुणनखंड।
आइए समस्या को समझने के लिए एक उदाहरण लेते हैं
Input: X= 30 , array = {2, 3, 6, 10, 12}
Output : 2 3 6 इस समस्या को हल करने के लिए, हमें सरणी के तत्वों को पार करना होगा। और इस तत्व को 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;
} आउटपुट
वे संख्याएं जिनका अभाज्य संख्याओं का समूह 60 के अभाज्य गुणनखंड के समुच्चय का उपसमुच्चय है
2 5 10