平衡素數


平衡素數是指前後的素數差相同。換句話說,它是最近的前後素數的平均值。

如果素數滿足以下公式,則為平衡素數 −

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

其中 n 是素數在有序素數集合中的索引。

有序素數集合: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

更新於: 2019 年 10 月 24 日

154 次瀏覽

開啟 職業生涯

完成課程,獲得認證

立即開始
廣告