ในปัญหานี้ เราได้รับชุดของตัวเลข N และตัวเลข X และเราต้องพิมพ์ตัวเลขทั้งหมดจากอาร์เรย์ที่มีชุดปัจจัยเฉพาะเป็นส่วนย่อยของชุดของ ตัวประกอบเฉพาะของ X.
มาดูตัวอย่างทำความเข้าใจปัญหากัน
Input: X= 30 , array = {2, 3, 6, 10, 12} Output : 2 3 6
เพื่อแก้ปัญหานี้ เราต้องสำรวจองค์ประกอบของอาร์เรย์ และแบ่งองค์ประกอบนี้ด้วย gcd ของ (องค์ประกอบ x) ทำซ้ำการหารจน 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