在 C++ 程序中查找具有给定乘积的两个不同素数
c++server side programmingprogramming
在本教程中,我们将编写一个程序来查找具有给定乘积的两个不同素数。让我们看一些例子。
输入 − 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