这题我使用暴力去求解,竟然能够通过

使用两个列表去模拟这个过程

一个列表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;
	}

}