码迷,mamicode.com
首页 > 其他好文 > 详细

素数环

时间:2015-03-22 09:06:02      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

直接枚举n!个效率不高,回溯法更优
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int Max = 10000; bool isp[Max]; int vis[Max]; int a[Max]= {1}; int n; void is_prime(int n) { memset(isp,true,sizeof(isp)); isp[0] = isp[1] = false; for(int i = 2; i <= 2*n; i++) if(isp[i] == true) //打点到2n的位置 { for(int j = i*2; j <= 2*n; j += i) isp[j] = false; } } void dfs(int cur) { if(cur == n && isp[a[0] + a[n-1]]) { for(int i = 0; i < n; i++) printf("%d",a[i]); printf("\n"); return; } for(int i = 2; i <= n; i++) if(!vis[i] && isp[i+a[cur-1]]) { a[cur] = i; vis[i] = 1; dfs(cur+1); vis[i] = 0; } } int main() { scanf("%d",&n); is_prime(n); dfs(1); return 0; }

 

素数环

标签:

原文地址:http://www.cnblogs.com/ekinzhang/p/4356684.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!