/*
题意:素数环,相邻的两个数的和为素数。
*/
#include<iostream>
using namespace std;
int ans[21], n;
bool a[40], b[21];
void work(int k)
{
int i;
if(k==n+1)
{
if(!a[ans[1]+ans[n]])
return;
bool pp=false;
for(i=1; i <= n; i++ )
{
if(pp)
printf(" ");
printf("%d", ans[i]);
pp=true;
}
printf("\n");
return ;
}
for(i=1; i <= n; i++ )
{
if(!b[i])
{
ans[k]=i;
if(ans[1]!=1)
return;
if(a[ans[k]+ans[k-1]]==false)
continue;
b[i]=true;
work(k+1);
b[i]=false;
}
}
}
int main()
{
memset(a, false, sizeof(a));
a[1]=a[2]=a[3]=a[5]=a[7]=a[11]=a[13]=a[17]=a[19]=a[23]=a[29]=a[31]=a[37]=true;
int p=1;
while(scanf("%d", &n) != EOF)
{
printf("Case %d:\n", p++);
memset(b, false, sizeof(b));
work(1);
printf("\n");
}
return 0;
}
本文探讨并实现了素数环的概念,即相邻两个数的和为素数的数列。通过C++编程语言,利用预设的素数判断算法,生成满足条件的数列,并以案例展示该算法的应用。
515

被折叠的 条评论
为什么被折叠?



