我試圖寫一些代碼,在最大數量,並給了我2和最大數量之間的所有素數。它幾乎可以工作,但是我遇到了打印所有素數的問題,但它也打印出相同質數的結果相乘。例如,它將打印2,3,4,5,7,9,它們都是0到10之間的所有素數,但它也會打印額外的數字,即2 * 2,3 * 3等等。請指導我正確的方向,以便我可以完成這個程序。尋找素數的Java
public class PrimeNumbers
{
public static void main(String[] args)
{
int max = 400;
//Runs through all the numbers between 2 and max, checks if
//the number is prime and prints it
for(int num = 2; num < max; ++num)
{
if(isPrimeNumber(num))
{
System.out.println(num);
}
}
}
//method to find all prime numbers
public static boolean isPrimeNumber(int number)
{
for(int mod = 2; mod < Math.sqrt(number); ++mod)
{
if(number % mod == 0)
{
return false;
}
}
return true;
}
}
4不是素數,9不是質... – Alboz 2014-09-28 19:07:12
即使編譯器可能會內聯'Math.sqrt'調用,我建議你自己做。 – Dici 2014-09-28 19:13:46
我知道這一點,這就是爲什麼我說它打印所有素數加上一些不是素數的額外數字。 – ed1234567 2014-09-28 19:46:21