给定整数N ,任务是计算N中的位数,这是质数,并且还要除以该数。
例子:
Input: N = 12
Output: 1
Explanation:
Digits of the number = {1, 2}
But, only 2 is prime number that divides N.
Input: N = 1032
Output: 2
Explanation:
Digits of the number = {1, 0, 3, 2}
3 and 2 divides the number and are also prime.
天真的方法:这个想法是找到数字的所有数字。对于每个数字,请检查是否为质数。如果是,则检查是否将数字相除。如果两种情况都成立,则将计数加1。最后的计数是必需的答案。
高效方法:由于只有2、3、5和7是素数,因此对于每个数字,请检查是否将数字除以2、3、5或7。如果两种情况都成立,则递增计数加1。最终计数是必需的答案。
以下是此方法的实现:
C++
// C++ program to count number of digits
// which is prime and also divides number
#include
using namespace std;
// Function to find the number of
// digits in number which divides the
// number and is also a prime number
int countDigit(int n)
{
bool prime[10];
memset(prime, false, sizeof(prime));
// Only 2, 3, 5 and 7 are prime
// one-digit number
prime[2] = prime[3] = true;
prime[5] = prime[7] = true;
int temp = n, count = 0;
// Loop to compute all the digits
// of the number untill it
// is not equal to the zero
while (temp != 0) {
// Fetching each digit
// of the number
int d = temp % 10;
temp /= 10;
// Checking if digit is greater than 0
// and can divides n and is prime too
if (d > 0 && n % d == 0 && prime[d])
count++;
}
return count;
}
// Driven Code
int main()
{
int n = 1032;
cout << countDigit(n) << endl;
return 0;
}
Java
// Java program to count number of digits
// which is prime and also divides number
class GFG {
// Function to find the number of
// digits in number which divides the
// number and is also a prime number
static int countDigit(int n)
{
boolean prime[] = new boolean[10];
for (int i = 0; i < 10; i++)
prime[i] = false;
// Only 2, 3, 5 and 7 are prime
// one-digit number
prime[2] = prime[3] = true;
prime[5] = prime[7] = true;
int temp = n, count = 0;
// Loop to compute all the digits
// of the number untill it
// is not equal to the zero
while (temp != 0) {
// Fetching each digit
// of the number
int d = temp % 10;
temp /= 10;
// Checking if digit is greater than 0
// and can divides n and is prime too
if (d > 0 && n % d == 0 && prime[d] == true)
count++;
}
return count;
}
// Driven Code
public static void main (String[] args)
{
int n = 1032;
System.out.println(countDigit(n)) ;
}
}
// This code is contributed by Yash_R
Python3
# Python program to count number of digits
# which is prime and also divides number
# Function to find the number of
# digits in number which divides the
# number and is also a prime number
def countDigit(n):
prime = [False]*10
# Only 2, 3, 5 and 7 are prime
# one-digit number
prime[2] = True
prime[3] = True;
prime[5] = True
prime[7] = True;
temp = n
count = 0;
# Loop to compute all the digits
# of the number untill it
# is not equal to the zero
while (temp != 0):
# Fetching each digit
# of the number
d = temp % 10;
temp //= 10;
# Checking if digit is greater than 0
# and can divides n and is prime too
if (d > 0 and n % d == 0 and prime[d]):
count += 1
return count
# Driver Code
n = 1032
print(countDigit(n))
# This code is contributed by ANKITKUMAR34
C#
// C# program to count number of digits
// which is prime and also divides number
using System;
class GFG {
// Function to find the number of
// digits in number which divides the
// number and is also a prime number
static int countDigit(int n)
{
bool []prime = new bool[10];
for (int i = 0; i < 10; i++)
prime[i] = false;
// Only 2, 3, 5 and 7 are prime
// one-digit number
prime[2] = prime[3] = true;
prime[5] = prime[7] = true;
int temp = n, count = 0;
// Loop to compute all the digits
// of the number untill it
// is not equal to the zero
while (temp != 0) {
// Fetching each digit
// of the number
int d = temp % 10;
temp /= 10;
// Checking if digit is greater than 0
// and can divides n and is prime too
if (d > 0 && n % d == 0 && prime[d] == true)
count++;
}
return count;
}
// Driven Code
public static void Main (string[] args)
{
int n = 1032;
Console.WriteLine(countDigit(n)) ;
}
}
// This code is contributed by Yash_R
输出:
2