循环 和素数

来源:互联网 发布:星盘哪些数据最重要 编辑:程序博客网 时间:2024/06/05 16:43
输入正整数n,把整数1,2,3,…,n组成一个环,使得相邻两个整数之和均为素数。输出时从整数1开始逆时针排列。同一个环应恰好输出一次。n≤16。
样例输入:
6
样例输出:
1 4 3 2 5 6

1 6 5 2 3 4

#include "stdio.h"#include  "malloc.h"int compare(int a[],int t){int i;for(i=0;i<t;i++)if(a[i]==a[t])return 0;return 1;}int depend(int n){int i;for(i=2;i<=n/2;i++)if(n%i==0)return 0;return 1;}int backtrack(int a[],int n,int t){int i,j;if(t==n-1)for(i=1;i<=n;i++){a[t]=i;if(depend(a[t]+a[t-1])==1 && depend(a[t]+a[0])==1 && compare(a,t)==1){for(j=0;j<n;j++)printf("%d ",a[j]);putchar('\n');}}else{for(i=1;i<=n;i++){a[t]=i;if(depend(a[t]+a[t-1])==1 && compare(a,t)==1)backtrack(a,n,t+1);}}return 0;}int main(){int *a;int n,i;int t=1;scanf("%d",&n);a=(int *)malloc(n*sizeof(int));a[0]=1;backtrack(a,n,t);return 0;}


0 0
原创粉丝点击