Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

พิมพ์ตัวเลขทั้งหมดที่มีชุดปัจจัยเฉพาะเป็นส่วนย่อยของชุดปัจจัยเฉพาะของ X ใน C++


ในปัญหานี้ เราได้รับชุดของตัวเลข 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