# Count of primes in a given range that can be expressed as sum of perfect squares

Given two integers **L** and **R**, the task is to find the number of prime numbers in the range **[L, R]** that can be represented by the sum of two squares of two numbers.**Examples:**

Input:L = 1, R = 5Output:1Explanation:

Only prime number that can be expressed as sum of two perfect squares in the given range is 5 (2^{2}+ 1^{2})Input:L = 7, R = 42Output:5Explanation:

The prime numbers in the given range that can be expressed as sum of two perfect squares are:

13 = 2^{2}+ 3^{2}

17 = 1^{2}+ 4^{2}

29 = 5^{2}+ 2^{2}

37 = 1^{2}+ 6^{2}

41 = 5^{2}+ 4^{2}

**Approach:**

The given problem can be solved using Fermat’s Little theorem, which states that a prime number **p** can be expressed as the sum of two squares if **p** satisfies the following equation:

(p – 1) % 4 == 0

Follow the steps below to solve the problem:

- Traverse the range
**[L, R]**. - For every number, check if it is a prime number of not.
- If found to be so, check if the prime number is of the form
**4K + 1**. If sp, increase**count**. - After traversing the complete range, print
**count**.

Below is the implementation of the above approach:

## C++

`// C++ Program to implement` `// the above approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to check if a prime number` `// satisfies the condition to be` `// expressed as sum of two perfect squares` `bool` `sumSquare(` `int` `p)` `{` ` ` `return` `(p - 1) % 4 == 0;` `}` `// Function to check if a` `// number is prime or not` `bool` `isPrime(` `int` `n)` `{` ` ` `// Corner cases` ` ` `if` `(n <= 1)` ` ` `return` `false` `;` ` ` `if` `(n <= 3)` ` ` `return` `true` `;` ` ` `if` `(n % 2 == 0 || n % 3 == 0)` ` ` `return` `false` `;` ` ` `for` `(` `int` `i = 5; i * i <= n; i = i + 6)` ` ` `if` `(n % i == 0 || n % (i + 2) == 0)` ` ` `return` `false` `;` ` ` `return` `true` `;` `}` `// Function to return the count of primes` `// in the range which can be expressed as` `// the sum of two squares` `int` `countOfPrimes(` `int` `L, ` `int` `R)` `{` ` ` `int` `count = 0;` ` ` `for` `(` `int` `i = L; i <= R; i++) {` ` ` `// If i is a prime` ` ` `if` `(isPrime(i)) {` ` ` `// If i can be expressed` ` ` `// as the sum of two squares` ` ` `if` `(sumSquare(i))` ` ` `count++;` ` ` `}` ` ` `}` ` ` `// Return the count` ` ` `return` `count;` `}` `// Driver Code` `int` `main()` `{` ` ` `int` `L = 5, R = 41;` ` ` `cout << countOfPrimes(L, R);` `}` |

## Java

`// Java program to implement` `// the above approach` `import` `java.util.*;` `class` `GFG{` `// Function to check if a prime number` `// satisfies the condition to be` `// expressed as sum of two perfect` `// squares` `static` `boolean` `sumSquare(` `int` `p)` `{` ` ` `return` `(p - ` `1` `) % ` `4` `== ` `0` `;` `}` `// Function to check if a` `// number is prime or not` `static` `boolean` `isPrime(` `int` `n)` `{` ` ` ` ` `// Corner cases` ` ` `if` `(n <= ` `1` `)` ` ` `return` `false` `;` ` ` `if` `(n <= ` `3` `)` ` ` `return` `true` `;` ` ` `if` `(n % ` `2` `== ` `0` `|| n % ` `3` `== ` `0` `)` ` ` `return` `false` `;` ` ` `for` `(` `int` `i = ` `5` `; i * i <= n; i = i + ` `6` `)` ` ` `if` `(n % i == ` `0` `|| n % (i + ` `2` `) == ` `0` `)` ` ` `return` `false` `;` ` ` `return` `true` `;` `}` `// Function to return the count of primes` `// in the range which can be expressed as` `// the sum of two squares` `static` `int` `countOfPrimes(` `int` `L, ` `int` `R)` `{` ` ` `int` `count = ` `0` `;` ` ` `for` `(` `int` `i = L; i <= R; i++)` ` ` `{` ` ` `// If i is a prime` ` ` `if` `(isPrime(i))` ` ` `{` ` ` `// If i can be expressed` ` ` `// as the sum of two squares` ` ` `if` `(sumSquare(i))` ` ` `count++;` ` ` `}` ` ` `}` ` ` ` ` `// Return the count` ` ` `return` `count;` `}` `// Driver code` `public` `static` `void` `main(String[] args)` `{` ` ` `int` `L = ` `5` `, R = ` `41` `;` ` ` `System.out.println(countOfPrimes(L, R));` `}` `}` `// This code is contributed by offbeat` |

## Python3

`# Python3 program for the` `# above approach` `# Function to check if a prime number` `# satisfies the condition to be` `# expressed as sum of two perfect` `# squares` `def` `sumsquare(p):` ` ` ` ` `return` `(p ` `-` `1` `) ` `%` `4` `=` `=` `0` `# Function to check if a` `# number is prime or not` `def` `isprime(n):` ` ` ` ` `# Corner cases` ` ` `if` `n <` `=` `1` `:` ` ` `return` `False` ` ` `if` `n <` `=` `3` `:` ` ` `return` `True` ` ` `if` `(n ` `%` `2` `=` `=` `0` `) ` `or` `(n ` `%` `3` `=` `=` `0` `):` ` ` `return` `False` ` ` ` ` `i ` `=` `5` ` ` `while` `(i ` `*` `i <` `=` `n):` ` ` `if` `((n ` `%` `i ` `=` `=` `0` `) ` `or` ` ` `(n ` `%` `(i ` `+` `2` `) ` `=` `=` `0` `)):` ` ` `return` `False` ` ` `i ` `+` `=` `6` ` ` ` ` `return` `True` `# Function to return the count of primes` `# in the range which can be expressed as` `# the sum of two squares` `def` `countOfPrimes(L, R):` ` ` ` ` `count ` `=` `0` ` ` `for` `i ` `in` `range` `(L, R ` `+` `1` `):` ` ` ` ` `# If i is a prime` ` ` `if` `(isprime(i)):` ` ` ` ` `# If i can be expressed` ` ` `# as the sum of two squares` ` ` `if` `sumsquare(i):` ` ` `count ` `+` `=` `1` ` ` `# Return the count` ` ` `return` `count` `# Driver code` `if` `__name__` `=` `=` `'__main__'` `:` ` ` ` ` `L ` `=` `5` ` ` `R ` `=` `41` ` ` `print` `(countOfPrimes(L, R))` ` ` `# This code is contributed by virusbuddah_` |

## C#

`// C# program to implement` `// the above approach` `using` `System;` `class` `GFG{` `// Function to check if a prime number` `// satisfies the condition to be` `// expressed as sum of two perfect` `// squares` `static` `bool` `sumSquare(` `int` `p)` `{` ` ` `return` `(p - 1) % 4 == 0;` `}` `// Function to check if a` `// number is prime or not` `static` `bool` `isPrime(` `int` `n)` `{` ` ` ` ` `// Corner cases` ` ` `if` `(n <= 1)` ` ` `return` `false` `;` ` ` `if` `(n <= 3)` ` ` `return` `true` `;` ` ` `if` `(n % 2 == 0 || n % 3 == 0)` ` ` `return` `false` `;` ` ` `for` `(` `int` `i = 5; i * i <= n; i = i + 6)` ` ` `if` `(n % i == 0 || n % (i + 2) == 0)` ` ` `return` `false` `;` ` ` `return` `true` `;` `}` `// Function to return the count of primes` `// in the range which can be expressed as` `// the sum of two squares` `static` `int` `countOfPrimes(` `int` `L, ` `int` `R)` `{` ` ` `int` `count = 0;` ` ` `for` `(` `int` `i = L; i <= R; i++)` ` ` `{` ` ` `// If i is a prime` ` ` `if` `(isPrime(i))` ` ` `{` ` ` `// If i can be expressed` ` ` `// as the sum of two squares` ` ` `if` `(sumSquare(i))` ` ` `count++;` ` ` `}` ` ` `}` ` ` ` ` `// Return the count` ` ` `return` `count;` `}` `// Driver code` `public` `static` `void` `Main(String[] args)` `{` ` ` `int` `L = 5, R = 41;` ` ` `Console.WriteLine(countOfPrimes(L, R));` `}` `}` `// This code is contributed by Rajput-Ji` |

## Javascript

`<script>` `// javascript program to implement` `// the above approach` ` ` `// Function to check if a prime number` ` ` `// satisfies the condition to be` ` ` `// expressed as sum of two perfect` ` ` `// squares` ` ` `function` `sumSquare(p) {` ` ` `return` `(p - 1) % 4 == 0;` ` ` `}` ` ` `// Function to check if a` ` ` `// number is prime or not` ` ` `function` `isPrime(n) {` ` ` `// Corner cases` ` ` `if` `(n <= 1)` ` ` `return` `false` `;` ` ` `if` `(n <= 3)` ` ` `return` `true` `;` ` ` `if` `(n % 2 == 0 || n % 3 == 0)` ` ` `return` `false` `;` ` ` `for` `(i = 5; i * i <= n; i = i + 6)` ` ` `if` `(n % i == 0 || n % (i + 2) == 0)` ` ` `return` `false` `;` ` ` `return` `true` `;` ` ` `}` ` ` `// Function to return the count of primes` ` ` `// in the range which can be expressed as` ` ` `// the sum of two squares` ` ` `function` `countOfPrimes(L , R) {` ` ` `var` `count = 0;` ` ` `for` `(` `var` `i = L; i <= R; i++) {` ` ` `// If i is a prime` ` ` `if` `(isPrime(i)) {` ` ` `// If i can be expressed` ` ` `// as the sum of two squares` ` ` `if` `(sumSquare(i))` ` ` `count++;` ` ` `}` ` ` `}` ` ` `// Return the count` ` ` `return` `count;` ` ` `}` ` ` `// Driver code` ` ` `var` `L = 5, R = 41;` ` ` `document.write(countOfPrimes(L, R));` `// This code is contributed by todaysgaurav` `</script>` |

**Output:**

6

**Time Complexity:** O(N^{3/2}) **Auxiliary Space:** O(1)