Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

Super Prime ในการเขียนโปรแกรม c


ตัวเลขซุปเปอร์ไพรม์คือตัวเลขที่อยู่ในตำแหน่งจำนวนเฉพาะในลำดับของจำนวนเฉพาะทั้งหมด เรียกอีกอย่างว่าจำนวนเฉพาะที่มีลำดับสูง ตัวเลขเหล่านี้ครอบครองตำแหน่งในลำดับของจำนวนเฉพาะซึ่งเท่ากับจำนวนเฉพาะ ซุปเปอร์ไพรม์บางตัวคือ 3,5,11,1 7…

ตัวอย่างเช่น ให้เราหาจำนวนเฉพาะยิ่งยวดที่น้อยกว่า 13 -

ป้อนข้อมูล

13

ผลผลิต

3, 5, 11.

คำอธิบาย ในการหาจำนวนเฉพาะพิเศษที่น้อยกว่า 13 เราจะพบจำนวนเฉพาะทั้งหมดที่น้อยกว่า 13 ดังนั้น แสดงจำนวนเฉพาะที่น้อยกว่า 13 ทั้งหมดคือ 2,3,5,7,11,13 ตอนนี้ 2 เป็นจำนวนเฉพาะ ดังนั้นเราจะพิจารณาจำนวนเฉพาะที่ตำแหน่งเป็นจำนวนเฉพาะพิเศษ นี่หมายความว่าสามเป็นจำนวนเฉพาะ ในทำนองเดียวกัน 5 ที่ตำแหน่ง 3 และ 11 ที่ตำแหน่ง 5 เป็นจำนวนเฉพาะที่สำคัญมาก

ในการหาจำนวนเฉพาะที่เป็นซุปเปอร์ไพรม์ทั้งหมดที่น้อยกว่าจำนวนเฉพาะที่กำหนด ก่อนอื่นจะค้นหาจำนวนเฉพาะทั้งหมดที่น้อยกว่าจำนวนนั้นและจัดเก็บในอาร์เรย์ จากอาร์เรย์นี้จะพิมพ์เฉพาะตัวเลขที่มีตำแหน่งเท่ากับจำนวนเฉพาะใดๆ ตัวอย่างเช่น จำนวนเฉพาะที่ 2 3 5 7 11 13 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