1 条题解

  • 0
    @ 2024-12-24 9:54:35

    Java :

    import java.util.Scanner;
    
    
    
    public class Main {
    	static int n;
    	static int[] a = new int[50];
    	static boolean[] vis = new boolean[50];
    	static boolean[] isp = new boolean[50];
    
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		while (in.hasNextInt()) {
    			n = in.nextInt();
    			a[0] = 1;
    			for (int i = 2; i <= n * 2; i++)
    				isp[i] = isPrime(i);
    			dfs(1);
    		}
    	}
    
    	public static void dfs(int cur) {
    		if (cur == n && isp[a[n - 1] + a[0]]) {
    			for (int i = 0; i < n; i++) {
    				if (i == n - 1)
    					System.out.println(a[i]);
    				else
    					System.out.print(a[i] + " ");
    			}
    		} else {
    			for (int i = 2; i <= n; i++) {
    				if (!vis[i] && isp[i + a[cur - 1]]) {
    					a[cur] = i;
    					vis[i] = true;
    					dfs(cur + 1);
    					vis[i] = false;
    				}
    			}
    		}
    	}
    	public static boolean isPrime(int n) {
    		if (n < 2)
    			return false;
    		for (int j = 2; j * j <= n; j++)
    			if (n % j == 0)
    				return false;
    		return true;
    	}
    }
    
    
    • 1

    信息

    ID
    1332
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者