// by BNU_LZM
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 110;
int n, a[maxn], isp[1010];
void solve(int *A, int cur)
{
if(cur == n && isp[A[1]+A[n]])
{
for(int i = 1; i <= n; i++) printf("%d ", A[i]);
printf("\n");
}
else
{
for(int i = 1; i <= n; i++)
{
int ok = 1;
for(int j = 1; j <= cur; j++)
{
if(A[j] == i)
{
ok = 0; break;
}
}
if(ok && isp[i+A[cur]])
{
A[cur+1] = i;
solve(A, cur+1);
}
}
}
}
int main()
{
freopen("in.txt", "r", stdin);
cin >> n;
memset(isp, 1, sizeof(isp));
isp[1] = 0;
for(int i = 2; i <= sqrt(1000+0.5); i++)//构造素数表
{
if(!isp[i]) continue;
for(int j = i*i; j <= 1000; j+=i)
isp[j] = 0;
}
a[1] = 1;
solve(a, 1);
return 0;
}
素数环
最新推荐文章于 2019-03-01 19:50:20 发布