gader8 edited 1 年,9 月前
编译器还有其他平台oj在样例8时输出正确答案,但是eoj的输出只有1,求解答
#include<bits/stdc++.h>
using namespace std;
const int N= 20;
int n,st[40],primes[40];
int sst[N],a[N],cnt;
void dfs(int x)
{
if(x==n+1&&!st[a[n]+a[1]]) {for(int i=1;i<=n;i++)
cout<<a[i]<<' ';
cout<<endl;
}
for(int i=2;i<=n;i++)
{
if(!sst[i]&&!st[a[x-1]+i])
{
a[x] = i;
sst[i]=1;
dfs(x+1);
sst[i] = 0;
}
}
return ;
}
int main()
{
cin>>n;
for(int i = 2;i<=40;i++)
{
if(!st[i]) primes[cnt++] = i;
for(int j=0;primes[j]<=40/i;j++)
{
st[primes[j]*i] = 1;
if(i%primes[j]==0) break;
}
}
a[1]=1;
sst[1]=1;
dfs(2);
return 0;
}