什么是Java中可用于检查素数的最短代码?

时间:2013-08-28 09:50:41

标签: java primes

我一直试图用Java中最短的代码块来检查数字是否为素数。这就是我提出的,即52个字符 - 不包括空格。

for(int i = 2; i < n;)
if(n % i++ == 0) 
    return false;
return true;

有人可以提出比此更短的内容吗?

注意:您可以假设已为您编写方法标题public boolean isPrime(int n){}n是要测试的整数。

4 个答案:

答案 0 :(得分:3)

由于性能和清晰度似乎并不重要,因此您无需提前完成

boolean b = 1>0;
for(int i = 2; i < n;)
    b &= n % i++ != 0;
return b;

1>0true短,0>0短于false

答案 1 :(得分:2)

48,如果您被允许使用现有的API(并且import语句不计算在内):

return BigInteger.valueOf(n).isProbablePrime(9);

答案 2 :(得分:1)

如果你正在检查一个大素数没有 你可以先检查一下

if(n>=5){
    if(n%6==1||n%6==5){
        for(i=2;i<=sqrt(n);i++){
            if(n%i==0)  
                return false
                else return true;
        }
    }
}

这将有助于删除许多情况,因为每个素数no&gt; = 5的形式为6K + 1或6K-1

答案 3 :(得分:0)

如果最短时间你意味着更快的代码,那么你可以只迭代直到sqrt(n),因为没有数字的因子大于数字本身的平方根