素数环
素数环是一个计算机程序问题,指的是将从
1
到
n
这
n
个整数围成一个圆环,若其中任意
2
个相邻的数字相加,
结果均为素数,那么这个环就成为素数环。
现在要求输入一个
n
,求
n
个数围成一圈有多少种素数
环,规定第一个数字是
1
。
N=6
1
4
3
2
5
6
1
6
5
2
3
4
N=8
1
2
3
8
5
6
7
4
1
2
5
8
3
4
7
6
1
4
7
6
5
8
3
2
1
6
7
4
3
8
5
2
#include<stdio.h>
#include<math.h>
int dis[21]={1},vis[21]={0,1};
int n;
int ring(int a,int b)
{
int sum,flag=0;
if (b==a){
sum=dis[b-1]+dis[0];
for (int j=2;j<=sqrt(sum);j++)
if (sum%j==0)
{
flag=1;
break;
}
if (flag==0)
for (int i=0;i<a;i++)
{
if (i==0) printf("%d",dis[i]);
else printf(" %d",dis[i]);
}
else return 0;
putchar('\n');
return 0;
}
for (int i=1;i<=a;i++)
{
if (!vis[i])
{
vis[i]=1;
dis[b]=i;
sum=dis[b]+dis[b-1];
for (int j=2;j<=sqrt(sum);j++)
if (sum%j==0)
{
flag=1;
break;
}
if (flag==0)
ring(a,b+1);
vis[i]=0;
flag=0;
}
}
}
int main()
{
int count=1;
while (~scanf("%d",&n))
{
printf("Case %d:\n",count);
count++;
ring(n,1);
putchar('\n');
}
return 0;
}
素数环
最新推荐文章于 2021-06-11 17:09:33 发布