这题我使用暴力去求解,竟然能够通过
使用两个列表去模拟这个过程
一个列表list装还能使用的数字
一个列表list2装已经使用了的数字
最后输出list2即可
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
ArrayList<Integer> list=new ArrayList<>();
for (int i = 1; i <= n ; i++) {
list.add(i);
}
ArrayList<Integer> list2=new ArrayList<>();
O1:for (int i = 1; i <= n; i++) {
// i表示下标
for (int j = 0; j < list.size(); j++) {
if(!isPrime(i+list.get(j))) {
list2.add(list.get(j));
list.remove(j);
continue O1;
}
}
System.out.println(-1);
return;
}
for(Integer x:list2) {
System.out.print(x+" ");
}
}
public static boolean isPrime(int x) {
if(x<=1) {
return false;
}
for (int i = 2; i+i <= x; i++) {
if(x%i==0)return false;
}
return true;
}
}



京公网安备 11010502036488号