首先我知道这是一个简单的问题,我是初学者,所以请耐心等待。 我一直有这个练习在Java中的问题,我正在练习测试,这真的搞砸了我的自信。 所以反正这个问题是这样的JAVA素数的递归方法
// Returns true if (and only if) n is a prime number; n > 1 is assumed.
private static boolean isPrime(long n) {
return isPrime(n, 2);
// See the method isPrime below.
}
// Helper method for isPrime ...
private static boolean isPrime(long n, long m) {
return (m * n > (m /* TODO: modify expression if necessary */))
|| (n % m == (0 /* TODO: modify expression if necessary */)
&& isPrime((m /* TODO: modify expression if necessary */), n + 1));
}
所以你应该填补其中TODO是括号内这些表达式。 我的问题是,我无法追查这件事。
isPrime((.....),n+1);
如果有人可以就如何开始解决这个问题提供一些建议,我将非常感激。
一个数字只有在它只能被1整除时才是整数。它的补充说明是它不是素数,如果它被任何其他素数均匀分配(即模数返回0)。应该有助于思考这个问题。 –
是的我明白,问题是如果数字是素数,并且n%m == 0对于只有非素数的情况为真,则该方法应该返回true。所以如果n是一个将是假的素数,并且假&&真仍然是假的。 – Rorie
'isPrime((m/* TODO:如果需要修改表达式* /),n + 1))'正在检查除数'm'的素数,而不是'n'。如果'm'不是素数,'n'不是素数。 –