我正在尝试创建一个 bool 递归函数,它只接受 1 个参数并且不充当另一个函数的包装器,它检查一个数字是否包含一对都是素数的组合。
例如,8379 的可能组合是:
8 379
83 79
837 9
我已经设法使用包装器函数创建函数,但如果没有包装器,我似乎无法做到这一点。
我目前拥有的是:
func(num):
num is prime -> return true
else -> call func(num / 10, num % 10).
fun(num1, num2):
num1 and num2 are primes -> return true
num1 < 10 -> return false
return func(num1 / 10, concat(num1 % 10, num2))
最佳答案
假设您定义了一个 isPrime
函数,那么您可以像这样定义您的函数:
bool f(int x) {
int right = x % 10, left = x / 10, iter = 1;
while (left) {
if (isPrime(left) && isPrime(right)) return true;
right = (pow(10, iter++) * (left % 10)) + right;
left = left / 10;
}
return false;
}
关于检查一个数字是否包含一对都是质数的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10558759/