📜  质数弱

📅  最后修改于: 2021-04-29 06:54:22             🧑  作者: Mango

给定整数N ,任务是检查N是否为弱质数。

例子:

解决方案:如果该数字是复合数字,则返回false,否则我们将用每个位置的0到9的所有可能数字将数字的每个数字一一替换,如果由此数字形成的数字是质数,则返回false。

C++
// C++ Program to check if n
// is Weakly Prime Number
  
#include 
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


输出:
Yes

参考:http://oeis.org/A050249