[英]I'm trying to print out prime number but not sure what's wrong with my code
我的代碼
void printPrimes (int max) {
boolean prime;
for (int n = 2; n < max; n++){
prime = true;
double maxF;
maxF = Math.sqrt(n);
for (int f = 2; f < maxF; f++) {
if (n % f == 0) {
prime = false;
}
}
if (prime == true) {
System.out.println(n + " is prime");
}
}
}
這是我得到的結果
4 是素數
5 是素數
6是素數
7 是素數
8 是素數
9是素數
10是素數
11是素數
我該怎么做才能解決這個問題
調試您的代碼。 就像,拿出筆,做電腦。 您在不運行此代碼的情況下回答它應該做什么。 然后使用調試器(或 sysout 語句,如果必須)檢查它實際執行的操作。 在那里你發現了差異,你發現了一個錯誤。
例如,Math.sqrt(4),那是什么? 2 小於 2 嗎?
在循環中更改條件
for (int f = 2; f <= maxF; f++) { // should be <= maxf
if (n % f == 0) {
prime = false;
}
}
至少用f*f <= max
替換f < maxF
因為循環最大值應該小於或等於
Math.sqrt(數字)
public class Main {
public static void main(String[] args) {
printPrimes(20);
}
static void printPrimes (int max) {
for(int i=2;i<=max;i++){
if(isPrime(i)){
System.out.println(i+" is prime");
}
}
}
static boolean isPrime(int number) {
if(number < 2){
return false;
}
for(int i=2;i<=Math.sqrt(number);i++){
if(number % i == 0){
return false;
}
}
return true;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.