Skip to content
Related Articles
Get the best out of our app
GFG App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Check if a number is prime in Flipped Upside Down, Mirror Flipped and Mirror Flipped Upside Down

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Given an integer N, the task is to check if N is a prime number in Flipped Down, Mirror Flipped and Mirror Flipped Down forms of the given number.
Examples:

Input: N = 120121 
Output: Yes
Explanation: 
Flipped forms of the number:
Flipped Upside Down – 151051
Mirror Flipped              – 121021
Mirror Upside Down   – 150151
Since 1510151 and 121021 are both prime numbers, the flipped numbers are prime.

Input: N = 12
Output: No
Explanation:
Flipped forms of the number:
Flipped Upside Down – 15
Mirror Flipped              – 21
Mirror Upside Down   – 51
All the flipped numbers are not prime.

Approach: Follow the steps below to solve the problem:

  1. Since the number N has to be prime in each of the Flipped upside down, Mirror Flipped and Mirror Upside Down forms, the only possible digits it should contain are {0, 1, 2, 5, 8}.
  2. Therefore, the problem reduces to check if the number is prime or not and if it is made up of the digits 0, 1, 2, 5, and 8 only.
  3. If found to be true, print “Yes“.
  4. Otherwise, print “No“.

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 N
// contains digits
// 0, 1, 2, 5, 8 only
bool checkDigits(int n)
{
    // Extract digits of N
    do {
        int r = n % 10;
 
        // Return false if any of
        // these digits are present
        if (r == 3 || r == 4 || r == 6
            || r == 7 || r == 9)
            return false;
 
        n /= 10;
    } while (n != 0);
 
    return true;
}
 
// Function to check if
// N is prime or not
bool isPrime(int n)
{
    if (n <= 1)
        return false;
 
    // Check for all factors
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0)
            return false;
    }
    return true;
}
 
// Function to check if n is prime
// in all the desired forms
int isAllPrime(int n)
{
    return isPrime(n)
           && checkDigits(n);
}
 
// Driver Code
int main()
{
    int N = 101;
 
    if (isAllPrime(N))
        cout << "Yes";
    else
        cout << "No";
    return 0;
}


Java




// Java program to implement
// the above approach
import java.util.*;
class GFG{
 
// Function to check if N
// contains digits
// 0, 1, 2, 5, 8 only
static boolean checkDigits(int n)
{
  // Extract digits of N
  do
  {
    int r = n % 10;
 
    // Return false if any of
    // these digits are present
    if (r == 3 || r == 4 ||
        r == 6 || r == 7 || r == 9)
      return false;
 
    n /= 10;
  } while (n != 0);
 
  return true;
}
 
// Function to check if
// N is prime or not
static boolean isPrime(int n)
{
  if (n <= 1)
    return false;
 
  // Check for all factors
  for (int i = 2; i * i <= n; i++)
  {
    if (n % i == 0)
      return false;
  }
  return true;
}
 
// Function to check if n is prime
// in all the desired forms
static boolean isAllPrime(int n)
{
  return isPrime(n) &&
         checkDigits(n);
}
 
// Driver Code
public static void main(String[] args)
{
  int N = 101;
 
  if (isAllPrime(N))
    System.out.print("Yes");
  else
    System.out.print("No");
}
}
 
// This code is  contributed by gauravrajput1


Python3




# Python3 program to implement
# the above approach
 
# Function to check if N
# contains digits
# 0, 1, 2, 5, 8 only
def checkDigits(n):
     
    # Extract digits of N
    while True:
        r = n % 10
 
        # Return false if any of
        # these digits are present
        if (r == 3 or r == 4 or
            r == 6 or r == 7 or
            r == 9):
            return False
 
        n //= 10
 
        if n == 0:
            break
 
    return True
 
# Function to check if
# N is prime or not
def isPrime(n):
     
    if (n <= 1):
        return False
 
    # Check for all factors
    for i in range(2, n + 1):
        if i * i > n:
            break
         
        if (n % i == 0):
            return False
             
    return True
 
# Function to check if n is prime
# in all the desired forms
def isAllPrime(n):
     
    return isPrime(n) and checkDigits(n)
 
# Driver Code
if __name__ == '__main__':
     
    N = 101
 
    if (isAllPrime(N)):
        print("Yes")
    else:
        print("No")
 
# This code is contributed by mohit kumar 29


C#




// C# program to implement
// the above approach
using System;
 
class GFG{
 
// Function to check if N
// contains digits
// 0, 1, 2, 5, 8 only
static bool checkDigits(int n)
{
   
  // Extract digits of N
  do
  {
    int r = n % 10;
 
    // Return false if any of
    // these digits are present
    if (r == 3 || r == 4 ||
        r == 6 || r == 7 ||
        r == 9)
      return false;
 
    n /= 10;
  } while (n != 0);
 
  return true;
}
 
// Function to check if
// N is prime or not
static bool isPrime(int n)
{
  if (n <= 1)
    return false;
 
  // Check for all factors
  for (int i = 2; i * i <= n; i++)
  {
    if (n % i == 0)
      return false;
  }
  return true;
}
 
// Function to check if n is prime
// in all the desired forms
static bool isAllPrime(int n)
{
  return isPrime(n) &&
         checkDigits(n);
}
 
// Driver Code
public static void Main(String[] args)
{
  int N = 101;
 
  if (isAllPrime(N))
    Console.Write("Yes");
  else
    Console.Write("No");
}
}
 
// This code is contributed by Rajput-Ji


Javascript




<script>
 
// Javascript program to implement
// the above approach
 
// Function to check if N
// contains digits
// 0, 1, 2, 5, 8 only
function checkDigits(n)
{
    // Extract digits of N
    do {
        var r = n % 10;
 
        // Return false if any of
        // these digits are present
        if (r == 3 || r == 4 || r == 6
            || r == 7 || r == 9)
            return false;
 
        n = parseInt(n/10);
    } while (n != 0);
 
    return true;
}
 
// Function to check if
// N is prime or not
function isPrime(n)
{
    if (n <= 1)
        return false;
 
    // Check for all factors
    for (var i = 2; i * i <= n; i++) {
        if (n % i == 0)
            return false;
    }
    return true;
}
 
// Function to check if n is prime
// in all the desired forms
function isAllPrime(n)
{
    return isPrime(n)
           && checkDigits(n);
}
 
// Driver Code
 
var N = 101;
if (isAllPrime(N))
    document.write("Yes");
else
    document.write("No");
 
 
</script>


Output: 

Yes

 

Time Complexity: O(N)
Auxiliary Space: O(1)


My Personal Notes arrow_drop_up
Last Updated : 17 Mar, 2021
Like Article
Save Article
Similar Reads
Related Tutorials