ไพรม์สมดุล number คือจำนวนเฉพาะที่มีความแตกต่างเท่ากันสำหรับจำนวนเฉพาะก่อนหน้าและถัดไป นั่นคือ เป็นค่าเฉลี่ยของจำนวนเฉพาะตัวถัดไปและจำนวนเฉพาะก่อนหน้าที่ใกล้เคียงที่สุด
สำหรับจำนวนเฉพาะที่จะเป็นจำนวนเฉพาะแบบสมดุล ควรทำตามสูตรต่อไปนี้ −
ป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