解析:这道题我的思路就是素数遍历一遍存到集合中,在从M-N的顺序遍历一遍存着素数的集合。整体不难,难点在需要遍历进集合的素数该有多少,题目给的是N>=10的4次方,这是素数集合里的索引,所以我们要遍历进集合的素数就应该更多,不然会有测试点4过不去。我也是尝试很多次才确定这个值,有点坑。
public class Pta_1013 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int M = scanner.nextInt();
int N = scanner.nextInt();
List<Integer> list = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList<Integer>();
//添加素数
for (int i = 2; i < 120000 ; i++) {//素数范围要更大一些
if (isprime(i)) {
list.add(i);
}
}
for (int i = M-1; i <N; i++) {
list2.add(list.get(i));
}
for(int i=1;i<=list2.size();i++){
System.out.print(list2.get(i-1));
if(i==list2.size()){
break;
}
if(i%10!=0){
System.out.print(" ");
}else{
System.out.println();
}
}
}
static boolean isprime(int i) {
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
return false;
}
}
return true;
}
}