Open In App

Weakly Prime Numbers

Last Updated : 25 May, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

Given an integer N, the task is to check if N is a weakly prime numbers.
 

Weakly Prime Numbers are prime numbers which cannot be turned into a prime by changing a single digit. 
 

Examples: 
 

Input: N = 294001 
Output: Yes
Input: N = 30 
Output: No 
 

 

Solution : If the number is composite return false else We will replace every digit of the number with all possible digits from 0 to 9 for every position one by one and return false if number formed by this is a prime number.
 

C++




// C++ Program to check if n
// is Weakly Prime Number
 
#include <bits/stdc++.h>
using namespace std;
 
// function to check if N is prime
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;
}
 
// function to check if n
// is a Weakly Prime Number
bool isWeaklyPrimeNum(int N)
{
    // number should be prime
    if (!isPrime(N))
        return false;
 
    // converting N to string
    string s = to_string(N);
 
    // loop to change digit
    // at every character
    // one by one.
    for (int j = 0; j < s.length(); j++) {
 
        string str = s;
 
        // loop to store every
        // digit one by one
        // at index j
        for (int i = 0; i <= 9; i++) {
 
            char c = '0' + i;
            str[j] = c;
            int Num = stoi(str);
            if (str[j] != s[j]
                && isPrime(Num)) {
                return false;
            }
        }
    }
    return true;
}
 
// Driver code
int main()
{
    int n = 294001;
    if (isWeaklyPrimeNum(n))
        cout << "Yes";
    else
        cout << "No";
    return 0;
}


Java




// Java program to check if n
// is Weakly Prime Number
class GFG{
 
// Function to check if N is prime
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;
}
 
// Function to check if n
// is a Weakly Prime Number
static boolean isWeaklyPrimeNum(int N)
{
     
    // Number should be prime
    if (!isPrime(N))
        return false;
 
    // Converting N to String
    String s = String.valueOf(N);
 
    // Loop to change digit
    // at every character
    // one by one.
    for(int j = 0; j < s.length(); j++)
    {
       char []str = s.toCharArray();
        
       // Loop to store every
       // digit one by one
       // at index j
       for(int i = 0; i <= 9; i++)
       {
          char c = (char)('0' + i);
          str[j] = c;
          int Num = Integer.valueOf(
                    String.valueOf(str));
                     
          if (str[j] != s.charAt(j) &&
              isPrime(Num))
          {
              return false;
          }
       }
    }
    return true;
}
 
// Driver code
public static void main(String[] args)
{
    int n = 294001;
     
    if (isWeaklyPrimeNum(n))
        System.out.print("Yes");
    else
        System.out.print("No");
}
}
 
// This code is contributed by Princi Singh


Python3




# Python3 Program to check if n
# is weakly prime Number
 
# function to check if N is prime
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
 
    for i in range(5, int(n**0.5) + 1, 6):
        if (n % i == 0 or n % (i + 2) == 0):
            return False
 
    return True
 
# function to check if n
# is a weakly prime Number
def isWeaklyPrimeNum(N):
 
    # number should be prime
    if (isPrime(N)==False) :
        return False
 
    # converting N to string
    s = str(N)
 
    # loop to change digit at every character
    # one by one.
    for  j in range(len(s)):
        str1 = s
 
        # loop to store every digit one by one
        # at index j
        for i in range(10):
            c = str(i)
            str1 = str1[ : j] + c + str1[j + 1 : ]
            Num = int(str1)
            if (str1[j] != s[j] and isPrime(Num)) :
                return False
             
    return True
 
# Driver code
n = 294001
if (isWeaklyPrimeNum(n)):
    print("Yes")
else:
    print("No")
 
# This code is contributed by Vishal Maurya.


C#




// C# program to check if n
// is Weakly Prime Number
using System;
class GFG{
 
// Function to check if N is prime
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;
}
 
// Function to check if n
// is a Weakly Prime Number
static bool isWeaklyPrimeNum(int N)
{
     
    // Number should be prime
    if (!isPrime(N))
        return false;
 
    // Converting N to String
    String s = String.Join("", N);
 
    // Loop to change digit
    // at every character
    // one by one.
    for(int j = 0; j < s.Length; j++)
    {
        char []str = s.ToCharArray();
             
        // Loop to store every
        // digit one by one
        // at index j
        for(int i = 0; i <= 9; i++)
        {
            char c = (char)('0' + i);
            str[j] = c;
            int Num = Int32.Parse(String.Join("", str));
                         
            if (str[j] != s[j] && isPrime(Num))
            {
                return false;
            }
        }
    }
    return true;
}
 
// Driver code
public static void Main(String[] args)
{
    int n = 294001;
     
    if (isWeaklyPrimeNum(n))
        Console.Write("Yes");
    else
        Console.Write("No");
}
}
 
// This code is contributed by Princi Singh


Javascript




<script>
// Javascript implementation
 
// function to check if N is prime
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;
}
   
// function to check if n
// is a Weakly Prime Number
function isWeaklyPrimeNum(N)
{
    // number should be prime
    if (!isPrime(N))
        return false;
   
    // converting N to string
    var s = N.toString();
   
    // loop to change digit
    // at every character
    // one by one.
    for (var j = 0; j < s.length; j++) {
   
        var str = s;
   
        // loop to store every
        // digit one by one
        // at index j
        for (var i = 0; i <= 9; i++) {
   
            var c = '0' + i.toString();
            str[j] = c;
            var Num = parseInt(str);
            if (str[j] != s[j]
                && isPrime(Num)) {
                return false;
            }
        }
    }
    return true;
}
 
 
// Driver Code
// Given Number N
var N = 294001;
 
// Function Call
if (isWeaklyPrimeNum(N))
    document.write("Yes");
else
    document.write("No");
   
// This code is contributed by shubhamsingh10
</script>


Output: 

Yes

 

References: http://oeis.org/A050249
 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads