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で書いています。

数字の「複数の」組み合わせを確認したいのか、1つだけを確認したいのかよくわかりません。

これは、組み合わせの存在を 1 つだけチェックする再帰関数です。あなたの要件に間違って対処した場合は、コメントを残してください。

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 に答える