# Check if a number is Quartan Prime or not

Given a positive integer N, check if it is Quartan prime or not. Print ‘Yes’ if it is a Quartan prime otherwise Print ‘No’.

Quartan Prime : A prime number of the form x4 + y4 where x > 0, y > 0, and x and y are integers is a Quartan Prime.

Quartan Prime in the range 1 – 100 are:

2, 17, 97

Examples:

```Input : 17
Output : Yes
Explanation : 17 is a prime number and can be
expressed in the form of:
x4 + y4  as ( 14 + 24 )

Input : 31
Output : No
Explanation: 31 is prime number but can not be
expressed in the form of x4 + y4.
```

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

A Simple Solution is to check if the given number is prime or not and then check if it can be expressed in the form of x4 + y4 or not.

An Efficient Solution is based on the fact that every Quartan Prime can also be expressed in the form 16*n + 1. So, we can check if a number is prime or not and can be expressed in the form of 16*n + 1 or not. If yes, Then the number is Quartan Prime otherwise not.

Below is the implementation of the above approach

## C++

 `// CPP program to check if a number is ` `// Quartan 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 = 17; ` ` `  `    ``// Check if number is prime ` `    ``// and of the form 16*n + 1 ` `    ``if` `(isPrime(n) && (n % 16 == 1)) { ` `        ``cout << ``"YES"``; ` `    ``} ` `    ``else` `{ ` `        ``cout << ``"NO"``; ` `    ``} ` ` `  `    ``return` `0; ` `} `

## Java

 `// JAVA program to check if a number is ` `// Quartan 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 = ``17``; ` ` `  `        ``// Check if number is prime ` `        ``// and of the form 16*n + 1 ` `        ``if` `(isPrime(n) && (n % ``16` `== ``1``)) { ` `            ``System.out.println(``"YES"``); ` `        ``} ` `        ``else` `{ ` `            ``System.out.println(``"NO"``); ` `        ``} ` `    ``} ` `} `

## Python3

 `# Python 3 program to check if a number is  ` `# Quartan 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 ``=` `17` `     `  `# Check if number is prime  ` `# and of the form 16 * n + 1 ` ` `  `if``(isPrime(n) ``and` `(n ``%` `16` `=``=` `1``) ): ` ` `  `    ``print``(``"YES"``) ` ` `  `else``: ` ` `  `    ``print``(``"NO"``) ` ` `  `           `

## C#

 `// C# program to check if a number  ` `// is Quartan 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() ` `{ ` `    ``int` `n = 17; ` ` `  `    ``// Check if number is prime ` `    ``// and of the form 16*n + 1 ` `    ``if` `(isPrime(n) && (n % 16 == 1))  ` `    ``{ ` `        ``Console.WriteLine(``"YES"``); ` `    ``} ` `    ``else`  `    ``{ ` `        ``Console.WriteLine(``"NO"``); ` `    ``} ` `} ` `} ` ` `  `// This code is contributed ` `// by inder_verma `

## PHP

 ` `

Output:

```YES
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : inderDuMCA, vt_m