题目描述
令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出PM到PN的所有素数。
输入描述:
输入在一行中给出M和N,其间以空格分隔。
输出描述:
输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。
输入例子:
5 27
输出例子:
11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103
import java.util.Scanner; public class countPrime { public static void main(String[] args) { Scanner in = new Scanner(System.in); int M = in.nextInt(); int N = in.nextInt(); long[] primeNums = new long[N]; //创建数组,用于存储第1-N位的素数 int count = 0; //存储当前查找的素数的数量 int i = 2; //从2开始遍历,直到找出N个素数 while(count < N) { if (isPrime(i)) { //System.out.println(i+":"+isPrime(i)); primeNums[count] = i; count++; i++; } else { i++; } } StringBuffer sbBuffer = new StringBuffer(); //从第M个素数开始输出,每一行输出10个 for (int j = M-1; j < N; j++) { if (j % 10 != ((M-2)%10)) { sbBuffer.append(primeNums[j]).append(" "); } else { sbBuffer.append(primeNums[j]).append("\n"); } } //删除StringBuffer结尾附加的空格或者换行符 sbBuffer.deleteCharAt(sbBuffer.length()-1); System.out.println(sbBuffer); } //判断整数n是不是素数 public static boolean isPrime(long n){ for (int k = 2; k <= Math.sqrt(n); k++) { if (n % k == 0) { return false; } } return true; } }
本文介绍了一个Java程序,该程序能够根据用户输入的两个正整数M和N(M≤N≤10000),输出从第M个素数到第N个素数之间的所有素数。程序使用了素数判断方法,并采用StringBuffer来格式化输出结果。
4753

被折叠的 条评论
为什么被折叠?



