NYOJ-488 素数环

素数环

时间限制:1000ms | 内存限制:65535KB难度:2

描述
有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环。

为了简便起见,我们规定每个素数环都从1开始。例如,下图就是6的一个素数环。

NYOJ-488 素数环

输入
有多组测试数据,每组输入一个n(0<n<20),n=0表示输入结束。
输出
每组第一行输出对应的Case序号,从1开始。

如果存在满足题意叙述的素数环,从小到大输出。

否则输出No Answer。
样例输入
6830
样例输出
Case 1:1 4 3 2 5 61 6 5 2 3 4Case 2:1 2 3 8 5 6 7 41 2 5 8 3 4 7 61 4 7 6 5 8 3 21 6 7 4 3 8 5 2Case 3:No Answer
1 /*  2    功能Function Description:     NYOJ-488 3    开发环境Environment:          DEV C++ 4.9.9.1 4    技术特点Technique: 5    版本Version: 6    作者Author:                   可笑痴狂 7    日期Date:                      20120815 8    备注Notes: 9    素数环:给定n,1~n组成一个素数环,相邻两个数的和为素数。10     首先偶数(2例外,但是本题不会出现两个数的和为2)不是素数,11     所以素数环里奇偶间隔。如果n是奇数,必定有两个奇数相邻的情况。12     所以当n为奇数时,输出“No Answer”。13     当n == 1时只1个数,算作自环,输出114     所有n为偶数的情况都能变成奇偶间隔的环-----所以都有结果。15 */16 #include<stdio.h>17 #include<string.h>18 19 int prime[40]={1,1,0,0,1,0,1,0,1,1,1,0,1,0,1,1,1,0,1,0,1,1,1,0,1,1,1,1,1,0,1,0,1,1,01,1,1,0,1,1};20 int visit[21];21 int ring[21];22 23 /*24 void Is_prime()25 {26     int i,j;27     prime[0]=prime[1]=1;28     for(i=2;i<=6;++i)29         for(j=i*i;j<40;j+=i)30             prime[j]=1;31 }32 */33 void DFS(int k,int n)34 {35     int i;36     if(k==n+1&&prime[ring[n]+ring[1]]==0)37     {38         printf("1");39         for(i=2;i<=n;++i)40             printf(" %d",ring[i]);41         printf("\n");42         return;43     }44     for(i=2;i<=n;++i)45     {46         if(!visit[i]&&!prime[i+ring[k-1]])47         {48             visit[i]=1;49             ring[k]=i;50             DFS(k+1,n);51             visit[i]=0;52         }53     }54 }55 56 int main()57 {58     int T,n;59     T=1;60 //    Is_prime();61     while(scanf("%d",&n),n)62     {63         printf("Case %d:\n",T++);64         if(n==1)65         {66             printf("1\n");67             continue;68         }69         if(n&1)70         {71             printf("No Answer\n");72             continue;73         }74         memset(visit,0,sizeof(visit));75         visit[1]=ring[1]=1;76         DFS(2,n);77     }78     return 0;79 }

原文链接: https://www.cnblogs.com/dongsheng/archive/2012/08/15/2639452.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/59532

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 上午9:08
下一篇 2023年2月9日 上午9:09

相关推荐