GeeksforGeeks App
Open App
Browser
Continue

# Check if a number is a Pythagorean Prime or not

Given a positive integer N, check if it is Pythagorean prime or not. If it is a Pythagorean prime, print ‘Yes’ otherwise print ‘No’.
Pythagorean primes : A prime number of the form 4*n + 1 is a Pythagorean prime. It can also be expressed as sum of two squares.
Pythagorean primes in the range 1 – 100 are:

5, 13, 17, 29, 37, 41, 53, 61, 73, 89, 97

Examples

```Input : N = 5
Output : Yes
Explanation : 5 is a prime number and can be expressed
in the form ( 4*n + 1 ) as ( 4*1 + 1 ).

Input : N = 13
Output : Yes
Explanation: 13 is a prime number and can be expressed
in the form ( 4*n + 1 ) as ( 4*3 + 1 ).```

A Simple Solution is to check first if the given number is prime or not and can be written in the form of 4*n + 1 or not. If yes, Then the number is Pythagorean prime, otherwise not.
Below is the implementation of the above approach

## C++

 `// CPP program to check  if a number is``// Pythagorean prime or not` `#include ``using` `namespace` `std;` `// 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``;` `    ``// This is checked so that we can skip``    ``// middle five numbers in below loop``    ``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``;``}` `// Driver Program``int` `main()``{``    ``int` `n = 13;``    ` `    ``// Check if number is prime``    ``// and of the form 4*n+1``    ``if` `(isPrime(n) && (n % 4 == 1)) {``        ``cout << ``"YES"``;``    ``}``    ``else` `{``        ``cout << ``"NO"``;``    ``}` `    ``return` `0;``}`

## Java

 `// JAVA program to check  if a number is``// Pythagorean prime or not` `class` `GFG {` `    ``// 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``;` `        ``// This is checked so that we can skip``        ``// middle five numbers in below loop``        ``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``;``    ``}` `    ``// Driver Program``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `n = ``13``;` `        ``// Check if number is prime``        ``// and of the form 4n+1``        ``if` `(isPrime(n) && (n % ``4` `== ``1``)) {``            ``System.out.println(``"YES"``);``        ``}``        ``else` `{``            ``System.out.println(``"NO"``);``        ``}``    ``}``}`

## Python3

 `# Python 3 program to check if a number is``# Pythagorean prime or not` `# Utility 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` `    ``# This is checked so that we can skip``    ``# middle five numbers in below loop``    ``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 ``=` `i ``+` `6` `    ``return` `True``        ` `# Driver Code``n ``=` `13``    ` `# Check if number is prime``# and of the form 4n + 1` `if``(isPrime(n) ``and` `(n ``%` `4` `=``=` `1``)):` `    ``print``(``"YES"``)` `else``:` `    ``print``(``"NO"``)``     `

## C#

 `// C# program to check if a number``// is Pythagorean prime or not``using` `System;` `class` `GFG``{` `// 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``;``    ``}` `    ``// This is checked so that we``    ``// can skip middle five numbers``    ``// in below loop``    ``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``;``}` `// Driver Code``public` `static` `void` `Main(``string``[] args)``{``    ``int` `n = 13;` `    ``// Check if number is prime``    ``// and of the form 4n+1``    ``if` `(isPrime(n) && (n % 4 == 1))``    ``{``        ``Console.WriteLine(``"YES"``);``    ``}``    ``else``    ``{``        ``Console.WriteLine(``"NO"``);``    ``}``}``}` `// This code is contributed by Shrikant13`

## PHP

 ``

## Javascript

 ``

Output:

`YES`

Time Complexity: O(sqrt(n))

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up