解析:這道題我的思路就是素數遍歷一遍存到集合中,在從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;
}
}