题目描述 判断[ k1,k2]之间有多少个素数(包含k1和k2),并输出这些素数。 ( 1 <= k1 < k2 <= 1000 )

输入要求 输入两个正整数k1和k2。

输出要求 输出两行信息,第一行是[k1,k2]之间素数个数,第二行输出所有素数。素数之间用空格分开。

输入样例 1 10

输出样例 4 2 3 5 7

提示 最后一个素数的后面直接换行,不需要再加空格。

来源 NBU OJ 上代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int a, b;
        int i = 0, j = 0;
        int temp = 0;//格式化用的
        int sum = 0;//记录素数个数
        int count = 0;//记录个数
        Scanner scanner = new Scanner(System.in);
        a = scanner.nextInt();
        b = scanner.nextInt();
        for (i = a; i <= b; i++) {
            count = 0;
            for (j = 1; j <= i; j++) {
                if (i % j == 0) {
                    count++;
                }
            }
            if (count == 2) {
                sum++;
            }
        }
        System.out.println(sum);
        //查找素数
        for (i = a; i <= b; i++) {
            count = 0;
            for (j = 1; j <= i; j++) {
                if (i % j == 0) {
                    count++;
                }

            }
            if (count == 2) {
                temp++;
                if (temp < sum) {
                    System.out.print(i + " ");//不是最后一位时输出格式
                } else {
                    System.out.print(i);//最后一位时直接输出素数
                }
            }
        }
        System.out.println();
    }
}

总结

先统计出素数的个数,再统计素数并输出素数。注意格式化。