当输入为a时,isPrime方法应返回布尔值true 素数,否则为假。 isPrime方法应该测试num是否为prime 试图将所有整数除以2到num - 1.例如,测试数字是否为7 在宣布7确实是素数之前,它会尝试将7除以2,3,4,5和6。另一方面,为了测试数字9是否为素数,此方法将尝试将9除以2,然后将3除以3,然后再声明9不是素数。
我把这个方法的基本结构放在一起,我必须使用,但是我的问题就在那里。我在那里尝试的任何东西都行不通。怎么可能解决这个问题?
public isPrime(num)
{
return this.helpPrime(num, 2);
}
private helpPrime(num, divisor)
{
if (divisor == num)
return ??;
if (num % divisor == 0)
return ??;
return this.helpPrime(??, ??);
}
答案 0 :(得分:1)
首先,您的方法需要返回类型。它们也应该是静态的。
其次,您的策略是错误的。你不需要辅助方法,你只需要一个for循环:
public static boolean isPrime(num) {
long sqrt = (int) Math.sqrt(num);
for(long divisor = 2; divisor <= sqrt; divisor++) {
if(num % divisor == 0) {
// This only needs to happen once
// for this number to NOT be prime
return false;
}
}
// If we get here, the number is prime.
return true;
}
答案 1 :(得分:0)
public boolean isPrime( int num ) {
return helpPrime( num, 2 );
}
private boolean helpPrime( int num, int divisor ) {
if( divisor == num )
return true;
if( num % divisor == 0 )
return false;
return helpPrime( num, divisor + 1 );
}
一个打印素数的简单Java类:
public class Primes {
public static void main( String[] args ) {
for( int i = 2; i < 100; i++ ) {
if( Primes.isPrime( i ) ) {
System.out.println( i );
}
}
}
public static boolean isPrime( int num ) {
return Primes.helpPrime( num, 2 );
}
private static boolean helpPrime( int num, int divisor ) {
if( divisor == num )
return true;
if( num % divisor == 0 )
return false;
return helpPrime( num, divisor + 1 );
}
}
答案 2 :(得分:0)
这是解决方案。
public class MathClass {
public static boolean isPrime(int num)
{
return MathClass.helpPrime(num, 2);
}
private static boolean helpPrime(int num,int divisor)
{
if (divisor == num)
return true;
if (num % divisor == 0)
return false;
return MathClass.helpPrime(num, divisor + 1);
}
}