#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<string>
#include<cctype>
#include<cmath>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<stack>
#include<ctime>
#include<algorithm>
#include<climits>
#define LL long long
using namespace std;
const int N=101;
int A[N];
int n;
int isp[40];
int vis[N];
int is_prim(int a)
{
for(int i=2;i<=sqrt(a);i++)
if(a%i==0)
return 0;
return 1;
}
void dfs(int cur)
{
if(cur==n&&isp[A[n-1]+A[0]])
{
for(int i=0;i<n;i++)
cout<<A[i]<<' ';
cout<<endl;
}
else
{
for(int i=2;i<=n;i++)
if(!vis[i]&&isp[i+A[cur-1]])
{
vis[i]=1;
A[cur]=i;
dfs(cur+1);
vis[i]=0;
}
}
}
int main()
{
for(int i=2;i<40;i++)
isp[i]=is_prim(i);
while(cin>>n)
{
memset(vis,0,sizeof(vis));
A[0]=1;
vis[1]=1;
dfs(1);
}
return 0;
}
小白书之回溯法求素数环
最新推荐文章于 2021-05-23 05:55:22 发布