在 C++ 中列印一組素數因子是 X 素數因子的子集的所有數字


在此問題中,我們給定了一組 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

更新於:2020 年 1 月 22 日

172 次瀏覽

啟動您的職業

完成課程獲得認證

開始
廣告
© . All rights reserved.