#include<stdio.h> #include<math.h> #include<string.h> int a[21],shuzi[21],prime1[38]={0}; int n; int prime(int x) { int i; for(i=2;i<=sqrt(x);i++) { if(x%i==0) { return 0; } } return 1; } void pp(int num) { int i; if(num==n&&prime1[1+shuzi[n]]) { for(i=1;i<=n;i++) printf("%d%c",shuzi[i],(i<n?' ':'\n')); return; } else { for(i=2;i<=n;i++) { if(!a[i]&&prime1[i+shuzi[num]]) { a[i]=1; shuzi[num+1]=i; pp(num+1); a[i]=0; } } } } int main() { int k=0,i; for(i=2;i<38;i++) { if(prime(i)) prime1[i]=1; else prime1[i]=0; } prime1[0]=prime1[1]=0; while(scanf("%d",&n)!=EOF) { for(i=0;i<21;i++) { a[i]=0; } k++; printf("Case %d:\n",k); shuzi[1]=1; pp(1); printf("\n"); } return 0; }
杭电1016
最新推荐文章于 2019-06-24 18:40:03 发布