HDOJ_1016 소수환

4654 단어 소수
이 문제 는 역귀적 으로 푼 것 으로 하나 의 깊이 를 두루 훑어보고, 조건 이 적당할 때, 현재 수조 에 저장된 것 을 출력하면 된다
#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
",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:
",T++); print(1); printf("
"); } return 0; }

좋은 웹페이지 즐겨찾기