1

此方法旨在递归地遍历该方法并判断一个数字是否为“超级素数”。超级素数是一个本身就是素数的数,每次它被 10 减去时,所有这些数也是素数。例如 2333 是超素数,因为 233 是素数 23 是素数,2 是素数。即使我传入数字 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 回答