#include<iostream> #include<cmath> #include<cstring> using namespace std; bool prime(int n){ if(n==1) return 0; else for(int i=2;i<=sqrt(n);i++) {if(!(n%i)) return 0;} return 1; } int n; int vis[20],a[20]={0}; void print(){ for(int i=1;i<=n;i++) { printf("%d",a[i]); if(i!=n)printf(" "); } printf("\n"); } void dfs(int j){ if(j>n){ print(); return; } for(int i=2;i<=n;i++){ if(j==n){if(!prime(1+i))continue;} else ; if(vis[i]==0&&prime(a[j-1]+i)){ a[j]=i; vis[i]=1; dfs(j+1); vis[i]=0; } } } int main(){ cin>>n; memset(vis,0,sizeof(vis)); memset(a,0,sizeof(a)); a[1]=1; vis[1]=1; dfs(2); }
问题描述:
输入n 输出一个由1到n相邻是素数的环