我一直在尝试用 Java 编写最短的代码块来检查一个数字是否为素数。这就是我想出的,它是 52 个字符 - 不包括空格。
for(int i = 2; i < n;)
if(n % i++ == 0)
return false;
return true;
任何人都可以提出比这更短的建议吗?
注意:您可以假设public boolean isPrime(int n){}
已经为您编写了方法标头,并且n
是要测试的整数。
由于性能和清晰度似乎并不重要,因此您无需提前完成
boolean b = 1>0;
for(int i = 2; i < n;)
b &= n % i++ != 0;
return b;
1>0
短于true
并且0>0
短于false
48、如果允许你使用现有的API(并且import语句不算):
return BigInteger.valueOf(n).isProbablePrime(9);
如果你正在检查一个大的素数,你可以先检查
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
如果最短意味着更快的代码,那么您只能迭代直到 sqrt(n),因为没有数字的因子大于数字本身的平方根