我的目標是關閉或設置爲false,所有不是素數的數組點。數組作爲參數提供。Java:Eratosthenes的篩子:數組作爲參數
public static boolean[] sieveOfEratosthenes(boolean [] a){
int increment= 2;
for(int n = 0; n < 9; n++){
for(int i = increment; i < a.length; i += increment){
a[i] = false;
}
increment += 1;
}
a[2] = true;
a[3] = true;
a[5] = true;
a[7] = true;
return a;
}
代碼工作正常,我只是想知道如果有一個更有效的方法比使用:
a[2] = true;
a[3] = true;
a[5] = true;
a[7] = true;
重置這些數組項爲真。
在此先感謝!
顧名思義,所有不是'false'的點應該是'true',對嗎?因此,將整個數組初始化爲「true」,然後設置不能爲「false」的素數的位置。 –
這是一項家庭作業,我無法改變這個數組,他們都被設置爲true。我假設提供的數組充滿了從0- * infinity * – user1172534
@HunterMcMillen數字的數組不會是更少的操作,只需在初始化爲false後將true設置爲true?更多的素數比不素數。 –