问题描述
给定一个正整数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;
}
}