C ++中的Balanced Prime

平衡素数是与其上一个和下一个素数具有相同差异的素数。即它是最近的下一个素数和上一个素数的均值。

为了使质数成为平衡质数,应遵循以下公式-

P n =(P(n-1)+ P(n + 1))/ 2

其中n是素数的有序集合中素数pn的索引。

素数的有序集合:2、3、5、7、11、13…。

首先,平衡质数是5、53、157、173……

在这个问题中,给我们一个数字n,我们必须找到第n个平衡质数。

让我们举个例子

Input : n = 3
Output : 157

为此,将生成质数并将其存储在数组中。我们将发现素数是否为平衡素数。如果它增加了计数,并且计数等于n,则打印它。

示例

#include<bits/stdc++.h>
#define MAX 501
using namespace std;
int balancedprimenumber(int n){
   bool prime[MAX+1];
   memset(prime, true, sizeof(prime));
   for (int p = 2; p*p <= MAX; p++){
      if (prime[p] == true)
      {
         for (int i = p*2; i <= MAX; i += p)
         prime[i] = false;
      }
   }
   vector<int> v;
   for (int p = 3; p <= MAX; p += 2)
   if (prime[p])
   v.push_back(p);
   int count = 0;
   for (int i = 1; i < v.size(); i++){
      if (v[i] == (v[i+1] + v[i - 1])/2)
      count++;
      if (count == n)
      return v[i];
   }
}
int main(){
   int n = 3;
   cout<<balancedprimenumber(n)<<endl;
   return 0;
}

输出结果

157