给定整数N ,任务是检查N是否为不可素数。
Unprimeable numbers are composite numbers which cannot be turned into a prime by changing a single digit.
例子:
Input: N = 200
Output: Yes
Input: N = 30
Output: No
解决方案:如果该数字是质数,则返回false,否则我们将数字的每个数字都用0到9的所有可能数字替换每个位置的每个位置,如果该数字构成的是质数,则返回false。
C++
// C++ Program to check if n
// is unprimeable 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 unprimeable Number
bool isUnPrimeableNum(int N)
{
// number should be composite
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 = 200;
if (isUnPrimeableNum(n))
cout << "Yes";
else
cout << "No";
return 0;
}
Java
// Java program to check if n
// is unprimeable 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 unprimeable Number
static boolean isUnPrimeableNum(int N)
{
// Number should be composite
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(new String(str));
if (str[j] != s.charAt(j) && isPrime(Num))
{
return false;
}
}
}
return true;
}
// Driver code
public static void main(String[] args)
{
int n = 200;
if (isUnPrimeableNum(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 unprimeable 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 unprimeable Number
def isUnPrimeableNum(N):
# number should be composite
if (isPrime(N)):
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 = 200
if (isUnPrimeableNum(n)):
print("Yes")
else:
print("No")
# This code is contributed by Vishal Maurya.
C#
// C# program to check if n
// is unprimeable 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 unprimeable Number
static bool isUnPrimeableNum(int N)
{
// Number should be composite
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(new String(str));
if (str[j] != s[j] && isPrime(Num))
{
return false;
}
}
}
return true;
}
// Driver code
public static void Main(String[] args)
{
int n = 200;
if (isUnPrimeableNum(n))
Console.Write("Yes");
else
Console.Write("No");
}
}
// This code is contributed by Princi Singh
输出:
Yes
参考: http : //www.numbersaplenty.com/set/unprimeable_number/