当前位置:编程学习 > C/C++ >>

九度教程第89题

C语言源码:
[cpp] 
#include<stdio.h>  
#include<math.h>  
int s[18];  
int mark[18];  
int pri(int n)  
{  
    int i,b;  
    b=(int)sqrt(n)+1;  
    if(n==2)  
        return 1;  
    i=2;  
    while(i<=b)  
    {  
        if(n%i==0)  
            return 0;  
        else  
            i++;  
    }  
    return 1;  
}  
void input(int i,int n)  
{  
    int j,flag;  
    if(i==n+1)  
    {  
        flag=0;  
        for(j=1;j<n;j++)  
        {  
            if(pri(s[j]+s[j+1])==0)  
            {  
                flag=1;  
                break;  
            }  
        }  
        if(pri(s[1]+s[n])==0)  
            flag=1;  
        if(flag==0)  
        {  
            for(j=1;j<n;j++)  
                printf("%d ",s[j]);  
            printf("%d\n",s[j]);  
        }  
    }  
    else  
    {  
        for(j=1;j<=n;j++)  
        {  
            if(mark[j]==-1&&pri(s[i-1]+j)==1)  
            {  
                s[i]=j;  
                mark[j]=1;  
                input(i+1,n);  
                mark[j]=-1;  
            }  
        }  
    }  
}  
int main()  
{  
    int n,num,i;  
    num=1;  
    s[1]=1;  
    while(scanf("%d",&n)!=EOF)  
    {  
        for(i=0;i<=n;i++)  
            mark[i]=-1;  
        mark[1]=1;  
        printf("Case %d:\n",num++);  
        input(2,n);  
        printf("\n");  
    }  
}  
 
 
分享到: 
上一篇:九度教程第88题
下一篇:九度教程第90题
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,