1

このメソッドは、メソッドを再帰的に処理し、数値が「スーパー プライム」であるかどうかを判断することを目的としています。超素数とは、それ自体が素数である数であり、10 で割るたびに、それらの数もすべて素数になります。たとえば、2333 は素数、23 は素数、2 は素数なので、2333 は超素数です。数値 2333 を渡しても、私のメソッドは常に false を返します。 isPrime() メソッドは、数値が素数かどうかを正常にテストします。

public boolean isSuperPrime(int h)
{
    if((h<10)&&isPrime(h))
        return true;
    else if(isPrime(h))
        return isSuperPrime(h/10);  
    else
        return false;


}
4

1 に答える 1

4

あなたのisPrime方法が間違っていると思われます。私はこの正確なコードを実行しました:

public static void main(String []args)
{
   System.out.println(isSuperPrime(2333));
}

public static boolean isSuperPrime(int h)
{
    if ((h<10)&&isPrime(h))
        return true;
    else if (isPrime(h))
        return isSuperPrime(h/10);  
    else
        return false;
}

//Note this is not an efficient implementation, 
//but it is correct, was just using it to test
public static boolean isPrime(int n)
{
    for(int i=2;i<n;i++) {
        if(n%i==0)
             return false;
    }
    return true;
}

を返しますtrue

于 2013-09-19T19:27:28.837 に答える