此方法旨在以递归方式遍历该方法并判断数字是否为“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;
}
答案 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
。