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

C++에서 N 아래의 모든 안전한 소수 인쇄

<시간/>

이 문제에서 정수 N이 주어지고 모든 safeprime 숫자를 출력해야 합니다. 값이 N보다 작은 경우.

안전한 소수 는 [(2*p)- 1]으로 표현될 수 있는 소수입니다. 여기서 p도 소수입니다.

- 5[(2*2) +1] , 7[(2*3)+1].

문제를 더 잘 이해하기 위해 몇 가지 예를 들어보겠습니다. −

Input: N = 12
Output: 5 7 11.

이 문제를 해결하기 위해 우리는 N보다 작은 모든 소수를 찾을 것입니다(이를 위해 우리는 에라토스테네스의 체를 사용할 것입니다). 그리고 소수가 안전한 소수인지 확인하고 안전한 소수인지 출력합니다.

#include <bits/stdc++.h>
using namespace std;
void printPrime(int n){
   cout<<n<<"\t";
}
void generateSafePrimes(int n){
   int prime[n + 1];
   for (int i = 2; i <= n; i++)
      prime[i] = 1;
   prime[0] = prime[1] = 0;
   for (int p = 2; p * p <= n; p++) {
      if (prime[p] == 1) {
         for (int i = p * 2; i <= n; i += p)
            prime[i] = 0;
      }
   }
   for (int i = 2; i <= n; i++) {
      if (prime[i] != 0) {
         int temp = (2 * i) + 1;
         if (temp <= n && prime[temp] != 0)
            prime[temp] = 2;
      }
   }
   for (int i = 5; i <= n; i++)
      if (prime[i] == 2)
         printPrime(i);
}
// Driver code
int main(){
   int n = 34;
   cout<<"safe Prime numbers less than "<<n<<" are :\n";
   generateSafePrimes(n);
   return 0;
}

출력

34보다 작은 안전 프라임 번호는 -

5 7 11 23