1

我正在尝试创建一个布尔递归函数,它只接受 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))
4

2 回答 2

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;
}
于 2012-05-11T21:33:50.120 回答
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)

于 2012-05-16T06:09:37.487 回答