我一直在想出Java中最短的代碼塊來檢查一個數是否爲素數。這是我想出來的,這是52個字符 - 不包括空格。什麼是可用於檢查素數的Java中最短的代碼?
for(int i = 2; i < n;)
if(n % i++ == 0)
return false;
return true;
任何人都可以建議比這個更短的東西嗎?
注意:你可以假設方法頭public boolean isPrime(int n){}
已經爲你寫的,n
是要測試的整數。
我一直在想出Java中最短的代碼塊來檢查一個數是否爲素數。這是我想出來的,這是52個字符 - 不包括空格。什麼是可用於檢查素數的Java中最短的代碼?
for(int i = 2; i < n;)
if(n % i++ == 0)
return false;
return true;
任何人都可以建議比這個更短的東西嗎?
注意:你可以假設方法頭public boolean isPrime(int n){}
已經爲你寫的,n
是要測試的整數。
48,如果你被允許使用現有的API(和import語句不計):
return BigInteger.valueOf(n).isProbablePrime(9);
由於性能和清晰度似乎沒有關係,你不需要提前完成
boolean b = 1>0;
for(int i = 2; i < n;)
b &= n % i++ != 0;
return b;
1>0
少於true
和0>0
比false
較短如果你正在檢查一個大素數沒有的 你可以先檢查
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;
}
}
}
這將有助於消除許多情況下,爲每一個素無> = 5形式爲6K + 1或6K-1
爲什麼你需要它?它是一些競爭的一部分或什麼? –
你是什麼意思最短?最少字節碼?你爲什麼想做這個? –
你可以通過調用另一個已經做到這一點的方法來縮短它。 –