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.
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 <bits/stdc++.h> 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
<?php // PHP program to check if a number // is Quartan Prime or not // 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; // This is checked so that // we can skip middle five // numbers in below loop 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; } // Driver Code $n = 17; // Check if number is prime // and of the form 16*n + 1 if (isPrime( $n ) && ( $n % 16 == 1)) { echo "YES" ; } else { echo "NO" ; } // This code is contributed // anuj_67 ?> |
Javascript
<script> // Javascript program to check if a number is // Quartan Prime or not // 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 ; // This is checked so that we can skip // middle five numbers in below loop if (n % 2 == 0 || n % 3 == 0) return false ; for ( var i = 5; i * i <= n; i = i + 6) { if (n % i == 0 || n % (i + 2) == 0) { return false ; } } return true ; } // Driver Program var n = 17; // Check if number is prime // and of the form 16*n + 1 if (isPrime(n) && (n % 16 == 1)) { document.write( "YES" ); } else { document.write( "NO" ); } // This code is contributed by itsok. </script> |
YES
Time Complexity: O(sqrt(n))
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!