問題描述
給定一個正整數N,請你輸出N以內(不包含N)的質數以及質數的個數。
輸入格式
輸入一行,包含一個正整數N。
輸出格式
共兩行。
第1行包含若干個素數,每兩個素數之間用一個空格隔開,素數從小到大輸出。
第2行包含一個整數,表示N以內質數的個數。
樣例輸入
10
樣例輸出
2 3 5 7
4
思路:寫一個boolean方法,判斷是否是質數,用List.add存起來,輸出的數字則用list.get取就完了。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<Integer> list = new ArrayList<Integer>();
int n = scanner.nextInt();
int ans = 0;
for (int i = 2; i < n; i++) {
if (prime(i)) { // 調用方法
ans++; // 質數總數++
list.add(i); // 是就存起來
}
}
for (int i = 0; i < list.size(); i++) { // 枚舉集合
System.out.print(list.get(i) + " "); // 取集合裏的質數
}
System.out.println(); // 換行
System.out.println(ans); // 輸出質數總數
}
public static boolean prime(int i) { // 真假質數
for (int j = 2; j < i; j++) {
if (i % j == 0) {
return false;
}
}
return true;
}
}