这题有没有人能给个优雅点的code?
回复 11楼 Devil_W
这个我没写出来。不过我在另一个论坛里也发了同样的帖子,有人回了代码。我贴出来给大家看看……如下:
程序代码:
#include<stdio.h> #include<math.h> #define N 20 bool Prime(int n) { int k = (int)sqrt(n); for(int i = 2; i <= k; i ++) { if(n % i == 0) { return false; } } return true; } bool Check(int a[], int n, int i) { for(int j = 0; j < n; j ++) { if(a[j] == i) { return false; } } if(n < N-1) { return (Prime(a[n-1]+i)); } else { return (Prime(a[0]+i) && Prime(a[n-1]+i)); } } void PrimeCircle(int a[], int n) { for(int i = 1; i <= N; i ++) { if(Check(a,n,i)) { a[n] = i; if(n == N-1) { for(int j = 0; j < N; j ++) { printf("%d ", a[j]); } printf("\n"); } else { PrimeCircle(a, n+1); } a[n] = 0; } } } int main() { int a[N]; PrimeCircle(a, 0); return 0; }