素数环。。DFS暴搜。。
很奇怪为什么用C++交总提示我SQRT调用不明确。。
还是用G++提交吧。。
#include<stdio.h> #include<string.h> #include<math.h> int visited[21]; int num[21]; int n; void print() { for (int i=0; i<n; i++) { printf("%d",num[i]); if(i!=n-1) putchar(' '); } putchar('\n'); } int sushu(int p) { for (int i=2; i<=sqrt(p); i++) if (p%i==0) return 0; return 1; } void dfs(int t) { if(t==n) {print(); return;} for (int i=2; i<=n; i++) { if (!visited[i] && sushu(num[t-1]+i) && ((t==n-1)? sushu(1+i):1)) { visited[i]=1; num[t]=i; dfs(t+1); visited[i]=0; } } } int main() { int Case=1; num[0]=1; while (~scanf("%d",&n)) { memset(visited, 0, sizeof(visited)); visited[1]=1; printf("Case %d:\n",Case++); dfs(1); putchar('\n'); } }