Skip to content
Related Articles

Related Articles

Improve Article

Weakly Prime Numbers

  • Last Updated : 25 May, 2021

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. 
 

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

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
 




My Personal Notes arrow_drop_up
Recommended Articles
Page :