HDOJ_1016 素数环

这个题还是用递归做的,就是一个一个深度遍历,条件合适时,就输出当前数组存储的の即可

#include<stdio.h>

#include<math.h>

#include<string.h>

int a[25],ben[25],n;

int prime(int k)

{

    int i;

    for(i=2;i<sqrt(k)+1;++i)

        if(k%i==0)

            return 0;

    return 1;

}

void print(int count)

{

    int i;

    if(count==n&&prime(a[0]+a[n-1]))//当满足条件时就输出

    {

        for(i=0;i<n-1;++i)

            printf("%d ",a[i]);

        printf("%d\n",a[i]);

    }

    else

    {

        for(i=2;i<=n;++i)

        {

            if(!ben[i]&&prime(i+a[count-1]))//用ben做标记

            {

                a[count]=i;

                ben[i]=1;

                print(count+1);

                ben[i]=0;//用完后清除标记

            }

        }

    }

}



int main()

{

    int T=1;

    a[0]=1;

    while(scanf("%d",&n)!=EOF)

    {

        memset(ben,0,sizeof(ben));

        printf("Case %d:\n",T++);

        print(1);

        printf("\n");

    }

    return 0;

}

 

你可能感兴趣的:(素数)