Java递归和超素数

时间:2013-09-19 19:17:57

标签: java recursion primes

此方法旨在以递归方式遍历该方法并判断数字是否为“super Prime”。超级素数是一个本身的数字,每次被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;


}

1 个答案:

答案 0 :(得分: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