Números primos débiles

Dado un número entero N , la tarea es verificar si N es un número débilmente primo.
 

Los números primos débiles son números primos que no se pueden convertir en primos cambiando un solo dígito. 
 

Ejemplos: 
 

Entrada: N = 294001 
Salida:
Entrada: N = 30 
Salida: No 
 

Solución: si el número es compuesto, devuelve falso; de lo contrario, reemplazaremos cada dígito del número con todos los dígitos posibles del 0 al 9 para cada posición uno por uno y devolveremos falso si el número formado por este es un número primo.
 

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>
Producción: 

Yes

 

Referencias: http://oeis.org/A050249
 

Publicación traducida automáticamente

Artículo escrito por spp____ y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *