C ++中的Balanced Prime
平衡素数是与其上一个和下一个素数具有相同差异的素数。即它是最近的下一个素数和上一个素数的均值。
为了使质数成为平衡质数,应遵循以下公式-
Pn=(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