首页 > 其他 > 详细

素数环

时间:2015-03-22 09:02:46      阅读:258      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!