我想讓這個Java程序流10001質數,但它莫名其妙地決定將16作爲素數標記。Java - 素數算法返回16
這裏的算法只是保持素數的運行計數,並檢查每個新的數字,看看它是否可以被小於它的任何素數整除。如果不是,則將其添加到數組primes []中,號碼顯示在控制檯上,並且過程繼續,直到primes[ ]
已滿。
public static void main(String[] args){
int[] primes = new int[10001];
int primeCount = 1;
int testNumber = 3;
primes[0] = 2;
while(primeCount < 10001){
for (int i = 0; i < primeCount; i++){
if (testNumber % primes[i] == 0){
i = 0;
testNumber++;
}
}
primes[primeCount] = testNumber;
System.out.println(testNumber);
primeCount++;
testNumber++;
}
}
控制檯讀取:
3 5 7 11 13 16 17 19 . . .
其他的一切看起來是爲了除16 ...任何想法?
你在檢查16對2嗎?它看起來像你的代碼不檢查2(素數)。 – 2013-02-24 21:18:49
有沒有聽說過Eratosthenes的篩子?爲什麼要組成一個新的,不正確的算法? http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes – duffymo 2013-02-24 21:19:42
這是功課嗎? – krico 2013-02-24 21:23:50