检查一个数字是否包含两个都是素数的组合

时间:2012-05-11 21:16:39

标签: c recursion primes

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

2 个答案:

答案 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)

调用它