C++程式:查詢具有給定乘積的兩個不同質數


在本教程中,我們將編寫一個程式來查詢具有給定乘積的兩個不同質數。讓我們看一些例子。

輸入 − 21

輸出 − 3 7

在這裡,我們需要找到所有小於給定乘積的質數。一旦我們有了這些質數,我們就可以很容易地找到這對數。請按照以下步驟解決問題。

  • 初始化一個乘積和一個布林陣列,用於儲存該範圍內的數字是否為質數。

  • 找到所有小於給定乘積的質數,並將它們儲存在一個數組中。

  • 迭代到給定乘積。

    • 如果當前數字是質數,並且n / current_number也是質數,則檢查它們是否不同。

    • 如果它們不同,則列印它們。

示例

讓我們看看程式碼。

 線上演示

#include <bits/stdc++.h>
using namespace std;
bool primes(int n, bool primeStatus[]) {
   primeStatus[0] = primeStatus[1] = false;
   for (int i = 2; i <= n; i++) {
      primeStatus[i] = true;
   }
   for (int i = 2; i * i <= n; i++) {
      if (primeStatus[i] == true) {
         for (int j = i * 2; j <= n; j += i)
            primeStatus[j] = false;
      }
   }
}
int main() {
   int n = 21;
   bool primeStatus[n + 1], pairsFound = false;
   primes(n, primeStatus);
   for (int i = 2; i < n; i++) {
      int pair = n / i;
      if (primeStatus[i] && primeStatus[pair] && pair != i && pair * i == n) {
         cout << i << " " << pair << endl;
         pairsFound = true;
         break;
      }
   }
   if (!pairsFound){
      cout << "No pairs";
   }
   return 0;
}

輸出

如果您執行上述程式碼,您將得到以下結果。

3 7

結論

如果您在本教程中有什麼疑問,請在評論區提出。

更新於:2020年12月29日

306 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告