我正在尝试创建一个布尔递归函数,该函数只接受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))
答案 0 :(得分:1)
假设你定义了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;
}
答案 1 :(得分:0)
用Java编写。
我不太确定您是要检查该号码的“多个”组合还是只检查一个。
这是我的递归函数,用于检查一个组合的存在。如果我错误地解决了您的要求,请发表评论。
public static boolean splitPrime(int n, int pow10) {
return (isPrime(n / pow10) && isPrime(n % pow10))
|| (pow10 < n/10 && splitPrime(n, pow10 * 10));
}
使用splitPrime(n,10)