在C ++中打印N以下的所有安全素数

在这个问题中,我们得到一个整数N,我们必须打印所有小于N的安全素数

安全素数是素数,可以表示为[(2 * p)-1],其中p也是素数。

例子-5 [(2 * 2)+1],7 [(2 * 3)+1]。

让我们举几个例子来更好地理解问题-

Input: N = 12

Output: 5 7 11.

为了解决这个问题,我们将找到所有小于N的质数(为此,我们将使用Eratosthenes的Sieve)。并检查素数是否是安全素数,并打印是否是安全素数。

示例

#include <bits/stdc++.h>

using namespace std;

void printPrime(int n){

   cout<<n<<"\t";

}

void generateSafePrimes(int n){

   int prime[n + 1];

   for (int i = 2; i <= n; i++)

      prime[i] = 1;

   prime[0] = prime[1] = 0;

   for (int p = 2; p * p <= n; p++) {

      if (prime[p] == 1) {

         for (int i = p * 2; i <= n; i += p)

            prime[i] = 0;

      }

   }

   for (int i = 2; i <= n; i++) {

      if (prime[i] != 0) {

         int temp = (2 * i) + 1;

         if (temp <= n && prime[temp] != 0)

            prime[temp] = 2;

      }

   }

   for (int i = 5; i <= n; i++)

      if (prime[i] == 2)

         printPrime(i);

}

//驱动程式码

int main(){

   int n = 34;

   cout<<"safe Prime numbers less than "<<n<<" are :\n";

   generateSafePrimes(n);

   return 0;

}

输出结果

小于34的安全素数为-

5 7 11 23

以上是 在C ++中打印N以下的所有安全素数 的全部内容, 来源链接: utcz.com/z/335202.html

回到顶部