Problem Descriptiona Ring is compose of n circles as shown in diagram. Put Natural number 1, 2, ..., n into each circle separately, and the sum of numbers in the adjacent circles should is a PR Ime.
Note:the number of first circle should always be 1.
INPUTN (0 < n < 20).
Outputthe output format is shown as sample below. Each row represents a series of circle numbers in the ring beginning from 1 clockwisely and anticlockwisely. The order of numbers must satisfy the above requirements. Print Solutions in lexicographical order.
You is to write a program, that completes above process.
Print a blank line after each case.
Sample INPUT6 8
Sample outputcase 1:1 4 3 2 5 6 1 6 5 2 3 4Case 2:1 2 3 8 5 6 7 4 1 2 5 8 3 4 7 6 1 4 7 6 5 8 3 2 1 6 7 4 3 8 5 2
1#include <stdio.h>2#include <string.h>3 intN;4 intvis[ -], a[ -];5 intJudgeints)6 {7 intFlag =1;8 for(inti =2; I <= s/2; i++)9 {Ten if(s%i = =0) One { AFlag =0; - Break; - } the } - returnFlag; - } - voidDfsintSintCNT) + { - intI, J; + if(CNT = = n+1&& Judge (a[1]+A[n])) A { at for(j =1; J < n+1; J + +) - { - if(J! =1) -printf" "); -printf"%d", A[j]); - } inprintf"\ n"); - return ; to } + for(i =1; I <= N; i++) - { the if(Judge (i + s) &&!Vis[i]) * { $A[CNT] =i;Panax NotoginsengVis[i] =1; -DFS (i, CNT +1); theVis[i] =0; + A } the } + return ; - } $ intMain () $ { - intnum =1; - while(~SCANF ("%d", &N)) the { -printf"Case %d:\n", num++);Wuyimemset (Vis,0,sizeof(Vis)); thevis[1] =1; -a[1] =1; WuDfs1,2); -printf"\ n"); About } $ return 0; -}
Hdoj 1016 Prime Ring problem