PTA(JAVA)——1013 数素数 (20 分)
令 Pi 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 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
思路
给出的 5 和 27 是让输出第五个到第27个素数,题目得理解透彻。。。
- 我们采用ArrayList数组去存储素数。
- 1不是素数,所以我们变量定义从2开始
- 用for循环,将素数存入数组
- 用录入的首尾两位数字,去控制for循环,打印数组中的数组。
import java.util.Scanner;
import java.util.ArrayList;
public class PTA1013 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//构建ArrayList数组
ArrayList arr = new ArrayList();
int j;
for (int i = 2; i <= 10010; i++) // 1不是素数,所以直接从2开始循环
{
j = 2;
while (i % j != 0) {
j++; // 测试2至i的数字是否能被i整除,如不能就自加
}
if (j == i) // 当有被整除的数字时,判断它是不是自身
{
arr.add(i); //将素数存进数组arr内
}
}
int m = sc.nextInt();
int n = sc.nextInt();
int line = 0;
//控制打印
for (int i = m-1; i < n; i++) {
line++;
if(line % 10 == 1){
System.out.print(arr.get(i));
}else if(line %10 != 0){
System.out.print(" "+arr.get(i));
}else if(line % 10 == 0){
System.out.println(" "+arr.get(i));
}
}
}
}