# Print all safe primes below N

Given an integer N, the task is to print all safe primes below N safe primes. A safe prime is a prime number of the form (2 * p) + 1 where p is also a prime.

The first few safe primes are 5, 7, 11, 23, 47, …

Examples:

Input: N = 13
Output: 5 7 11
5 = 2 * 2 + 1
7 = 2 * 3 + 1
11 = 2 * 5 + 1

Input: N = 6
Output: 5 7

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: First pre-compute all the primes till N using Sieve of Eratosthenes and then starting from 2 check whether the current prime is also a safe prime. If yes then print it else skip to the next prime.

Below is the implementation of above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function to print first n safe primes ` `void` `printSafePrimes(``int` `n) ` `{ ` `    ``int` `prime[n + 1]; ` ` `  `    ``// Initialize all entries of integer array ` `    ``// as 1. A value in prime[i] will finally ` `    ``// be 0 if i is Not a prime, else 1 ` `    ``for` `(``int` `i = 2; i <= n; i++) ` `        ``prime[i] = 1; ` ` `  `    ``// 0 and 1 are not primes ` `    ``prime = prime = 0; ` ` `  `    ``for` `(``int` `p = 2; p * p <= n; p++) { ` ` `  `        ``// If prime[p] is not changed, then ` `        ``//  it is a prime ` `        ``if` `(prime[p] == 1) { ` ` `  `            ``// Update all multiples of p ` `            ``for` `(``int` `i = p * 2; i <= n; i += p) ` `                ``prime[i] = 0; ` `        ``} ` `    ``} ` ` `  `    ``for` `(``int` `i = 2; i <= n; i++) { ` ` `  `        ``// If i is prime ` `        ``if` `(prime[i] != 0) { ` ` `  `            ``// 2p + 1 ` `            ``int` `temp = (2 * i) + 1; ` ` `  `            ``// If 2p + 1 is also a prime ` `            ``// then set prime[2p + 1] = 2 ` `            ``if` `(temp <= n && prime[temp] != 0) ` `                ``prime[temp] = 2; ` `        ``} ` `    ``} ` ` `  `    ``for` `(``int` `i = 5; i <= n; i++) ` ` `  `        ``// i is a safe prime ` `        ``if` `(prime[i] == 2) ` `            ``cout << i << ``" "``; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `n = 20; ` `    ``printSafePrimes(n); ` `    ``return` `0; ` `} `

## Java

 `// Java implementation of the approach  ` `class` `GFG{ ` `     `  `    ``// Function to print first n safe primes  ` `    ``static` `void` `printSafePrimes(``int` `n)  ` `    ``{  ` `        ``int` `prime[] = ``new` `int` `[n + ``1``];  ` `     `  `        ``// Initialize all entries of integer array  ` `        ``// as 1. A value in prime[i] will finally  ` `        ``// be 0 if i is Not a prime, else 1  ` `        ``for` `(``int` `i = ``2``; i <= n; i++)  ` `            ``prime[i] = ``1``;  ` `     `  `        ``// 0 and 1 are not primes  ` `        ``prime[``0``] = prime[``1``] = ``0``;  ` `     `  `        ``for` `(``int` `p = ``2``; p * p <= n; p++) ` `        ``{  ` `     `  `            ``// If prime[p] is not changed, then  ` `            ``// it is a prime  ` `            ``if` `(prime[p] == ``1``) ` `            ``{  ` `     `  `                ``// Update all multiples of p  ` `                ``for` `(``int` `i = p * ``2``; i <= n; i += p)  ` `                    ``prime[i] = ``0``;  ` `            ``}  ` `        ``}  ` `     `  `        ``for` `(``int` `i = ``2``; i <= n; i++) ` `        ``{  ` `     `  `            ``// If i is prime  ` `            ``if` `(prime[i] != ``0``) ` `            ``{  ` `     `  `                ``// 2p + 1  ` `                ``int` `temp = (``2` `* i) + ``1``;  ` `     `  `                ``// If 2p + 1 is also a prime  ` `                ``// then set prime[2p + 1] = 2  ` `                ``if` `(temp <= n && prime[temp] != ``0``)  ` `                    ``prime[temp] = ``2``;  ` `            ``}  ` `        ``}  ` `     `  `        ``for` `(``int` `i = ``5``; i <= n; i++)  ` `     `  `            ``// i is a safe prime  ` `            ``if` `(prime[i] == ``2``)  ` `                ``System.out.print(i + ``" "``);  ` `    ``}  ` `     `  `    ``// Driver code  ` `    ``public` `static` `void` `main(String []args) ` `    ``{  ` `        ``int` `n = ``20``;  ` `        ``printSafePrimes(n);  ` `    ``}  ` `} ` ` `  `// This code is contributed by Ryuga `

## Python3

 `# Python 3 implementation of the approach ` `from` `math ``import` `sqrt ` ` `  `# Function to print first n safe primes ` `def` `printSafePrimes(n): ` `    ``prime ``=` `[``0` `for` `i ``in` `range``(n ``+` `1``)] ` ` `  `    ``# Initialize all entries of integer  ` `    ``# array as 1. A value in prime[i]  ` `    ``# will finally be 0 if i is Not a ` `    ``# prime, else 1 ` `    ``for` `i ``in` `range``(``2``, n ``+` `1``): ` `        ``prime[i] ``=` `1` ` `  `    ``# 0 and 1 are not primes ` `    ``prime[``0``] ``=` `prime[``1``] ``=` `0` ` `  `    ``for` `p ``in` `range``(``2``, ``int``(sqrt(n)) ``+` `1``, ``1``): ` `         `  `        ``# If prime[p] is not changed,  ` `        ``# then it is a prime ` `        ``if` `(prime[p] ``=``=` `1``): ` `             `  `            ``# Update all multiples of p ` `            ``for` `i ``in` `range``(p ``*` `2``, n ``+` `1``, p): ` `                ``prime[i] ``=` `0` `     `  `    ``for` `i ``in` `range``(``2``, n ``+` `1``, ``1``): ` `         `  `        ``# If i is prime ` `        ``if` `(prime[i] !``=` `0``): ` `             `  `            ``# 2p + 1 ` `            ``temp ``=` `(``2` `*` `i) ``+` `1` ` `  `            ``# If 2p + 1 is also a prime ` `            ``# then set prime[2p + 1] = 2 ` `            ``if` `(temp <``=` `n ``and` `prime[temp] !``=` `0``): ` `                ``prime[temp] ``=` `2` ` `  `    ``for` `i ``in` `range``(``5``, n ``+` `1``): ` `         `  `        ``# i is a safe prime ` `        ``if` `(prime[i] ``=``=` `2``): ` `            ``print``(i, end ``=` `" "``) ` ` `  `# Driver code ` `if` `__name__ ``=``=` `'__main__'``: ` `    ``n ``=` `20` `    ``printSafePrimes(n) ` `     `  `# This code is contributed by ` `# Sanjit_Prasad `

## C#

 `// C# implementation of the approach  ` `using` `System; ` ` `  `class` `GFG{ ` `     `  `    ``// Function to print first n safe primes  ` `    ``static` `void` `printSafePrimes(``int` `n)  ` `    ``{  ` `        ``int``[] prime = ``new` `int` `[n + 1];  ` `     `  `        ``// Initialize all entries of integer array  ` `        ``// as 1. A value in prime[i] will finally  ` `        ``// be 0 if i is Not a prime, else 1  ` `        ``for` `(``int` `i = 2; i <= n; i++)  ` `            ``prime[i] = 1;  ` `     `  `        ``// 0 and 1 are not primes  ` `        ``prime = prime = 0;  ` `     `  `        ``for` `(``int` `p = 2; p * p <= n; p++) ` `        ``{  ` `     `  `            ``// If prime[p] is not changed, then  ` `            ``// it is a prime  ` `            ``if` `(prime[p] == 1) ` `            ``{  ` `     `  `                ``// Update all multiples of p  ` `                ``for` `(``int` `i = p * 2; i <= n; i += p)  ` `                    ``prime[i] = 0;  ` `            ``}  ` `        ``}  ` `     `  `        ``for` `(``int` `i = 2; i <= n; i++) ` `        ``{  ` `     `  `            ``// If i is prime  ` `            ``if` `(prime[i] != 0) ` `            ``{  ` `     `  `                ``// 2p + 1  ` `                ``int` `temp = (2 * i) + 1;  ` `     `  `                ``// If 2p + 1 is also a prime  ` `                ``// then set prime[2p + 1] = 2  ` `                ``if` `(temp <= n && prime[temp] != 0)  ` `                    ``prime[temp] = 2;  ` `            ``}  ` `        ``}  ` `     `  `        ``for` `(``int` `i = 5; i <= n; i++)  ` `     `  `            ``// i is a safe prime  ` `            ``if` `(prime[i] == 2)  ` `                ``Console.Write(i + ``" "``);  ` `    ``}  ` `     `  `    ``// Driver code  ` `    ``public` `static` `void` `Main() ` `    ``{  ` `        ``int` `n = 20;  ` `        ``printSafePrimes(n);  ` `    ``}  ` `} ` ` `  `// This code is contributed by Ita_c. `

## PHP

 ` `

Output:

```5 7 11
```

My Personal Notes arrow_drop_up 