#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;i++)
bool st[60];
int a[20];
bool cs[20];
void init()
{
rep(i,1,50)
{
rep(j,2,sqrt(i))
if(i%j==0)
{
st[i]=true;
}
}
rep(i,1,50)
st[i]=!st[i];
st[1]=false;
}
int n;
int res;
void dfs(int u)
{
if(u==n)
{
if(st[a[n-1]+a[0]]) res++;
return ;
}
rep(i,1,n)
if(!cs[i]&&(!u||st[a[u-1]+i]))
{
if(u==n&&!st[i+a[0]]) continue;
a[u++]=i;
cs[i]=true;
dfs(u);
u--;
cs[i]=false;
}
}
int main()
{
init();
while(cin>>n)
{
res=0;
dfs(0);
cout<<res/n<<endl;
}
}
算法概论-作业3-席景科老师 B algorithm-有趣的素数
最新推荐文章于 2024-07-13 10:01:39 发布