我一直试图用Java中最短的代码块来检查数字是否为素数。这就是我提出的,即52个字符 - 不包括空格。
for(int i = 2; i < n;)
if(n % i++ == 0)
return false;
return true;
有人可以提出比此更短的内容吗?
注意:您可以假设已为您编写方法标题public boolean isPrime(int n){}
,n
是要测试的整数。
答案 0 :(得分:3)
由于性能和清晰度似乎并不重要,因此您无需提前完成
boolean b = 1>0;
for(int i = 2; i < n;)
b &= n % i++ != 0;
return b;
1>0
比true
短,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),因为没有数字的因子大于数字本身的平方根