Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 프로그래밍의 슈퍼 프라임

<시간/>

초소수는 모든 소수의 배열에서 소수 위치를 차지하는 숫자입니다. 고차 소수라고도 하는 이 숫자는 소수의 순서에서 소수와 동일한 위치를 차지합니다. 일부 슈퍼 소수는 3,5,11,1 7…

예를 들어 13보다 작은 모든 초소수를 찾습니다. -

입력

13

출력

3, 5, 11.

설명 − 13보다 작은 초소수를 찾으려면 13보다 작은 모든 소수를 찾을 것입니다. 따라서 13보다 작은 모든 소수는 2,3,5,7,11,13임을 표시하십시오. 이제 2는 소수이므로 에 있는 소수를 초소수로 간주합니다. 이것은 3이 소수임을 의미합니다. 마찬가지로 위치 3의 5와 위치 5의 11은 초소수입니다.

주어진 소수보다 작은 모든 초소수를 찾으려면 먼저 해당 숫자보다 작은 모든 소수를 찾은 다음 배열에 저장합니다. 이 배열에서 위치가 소수 중 하나와 같은 숫자만 인쇄합니다. 예를 들어, 2nd 3rd 5th 7th 11th 13th에 있는 소수… 고려됩니다.

예시

#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