我想要製作一個void方法,將素數打印到給定的int參數。這是我的,它不工作。使用一種方法打印n個素數
public class listPrimes {
public static void main(String[] args) {
printPrimes(1000);
}
static void printPrimes(int max) {
int counter = 0;
for (int i = 2; i <= max; i++) {
for (int n = 2; n < i; n++) {
if (i % n == 0) {
counter++;
}
}
if (counter == 0) {
System.out.println(i);
counter = 0;
}
}
}
}
我能創建使用以下兩種方法預期的效果,但我想用一個做到這一點。我上面的代碼有什麼問題?
public class listPrimes {
public static void main(String[] args) {
printPrimes(1000);
}
private static void printPrimes(int max) {
for (int i = 2; i <= max; i++) {
if (primeCheck(i)) {
System.out.println(i);
}
}
}
static boolean isPrime(int check) {
for (int i = 2; i < check/2; i++) {
if (check % i == 0) {
return false;
}
}
return true;
}
}
你的代碼有什麼問題?錯誤的輸出? – nhahtdh
在第一種方法中,所有它打印出是2和3,其原因是低於! –
我期望這是出於性能原因,你正在嘗試單一方法,如果是這樣,也許保留一個發現質數的記錄,只是測試那些更大的'n'的每次迭代......應該發現它的速度比逐步檢查你已經測試過的許多非素數因子。 – sradforth