C语言编程中的超级Prime

超质数是在所有质数序列中占质数位置的数字。也称为高阶素数,这些数在素数序列中的位置占等位,后者等于素数。一些超级素数是3,5,11,1 7…

例如,让我们找出所有小于13的超质数-

输入项 

13

输出结果

3, 5, 11.

解释-要查找小于13的超级素数,我们将找到所有小于13的素数。因此,显示所有小于13的素数分别为2,3,5,7,11,13。现在,2是素数,因此我们将位置处的素数视为超级素数。这意味着三是质数。同样,位置3处的5和位置5处的11是超质数。

要查找所有小于给定素数的超质数,将首先查找所有小于该素数的质数,然后存储在数组中。从此数组中将仅打印位置等于任何质数的那些数字。例如,第2、3、5、7、11、13,…的质数。被考虑。

示例

#include<iostream>

using namespace std;

bool SieveOfEratosthenes(int n, bool isPrime[]) {

   isPrime[0] = isPrime[1] = false;

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

      isPrime[i] = true;

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

      if (isPrime[p] == true) {

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

            isPrime[i] = false;

      }

   }

}

void superPrimes(int n) {

   bool isPrime[n+1];

   SieveOfEratosthenes(n, isPrime);

   int primes[n+1], j = 0;

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

      if (isPrime[p])

   primes[j++] = p;

   for (int k=0; k<j; k++)

      if (isPrime[k+1])

   cout << primes[k] << " ";

}

int main() {

   int n = 343;

   cout << "Super-Primes less than "<< n << " are :"<<endl;

   superPrimes(n);

   return 0;

}

输出结果

Super-Primes less than 343 are :

3 5 11 17 31 41 59 67 83 109 127 157 179 191 211 241 277 283 331

以上是 C语言编程中的超级Prime 的全部内容, 来源链接: utcz.com/z/360057.html

回到顶部