-5

我一直在尝试用 Java 编写最短的代码块来检查一个数字是否为素数。这就是我想出的,它是 52 个字符 - 不包括空格。

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

任何人都可以提出比这更短的建议吗?

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

4

4 回答 4

3

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

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

1>0短于true并且0>0短于false

于 2013-08-28T10:00:04.650 回答
2

48、如果允许你使用现有的API(并且import语句不算):

return BigInteger.valueOf(n).isProbablePrime(9);
于 2013-08-28T09:55:27.467 回答
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 >= 5 的形式为 6K+1 或 6K-1

于 2013-08-28T10:14:55.230 回答
0

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

于 2013-08-28T09:57:23.717 回答