算法——素数环
来源:互联网 发布:免手机号注册qq 知乎 编辑:程序博客网 时间:2024/05/18 04:53
把从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数。
使用用回溯算法
代码如下:
#include<iostream>using namespace std;int a[21];int b[40];//判断是否为素数bool isprime(int n){int k;k = sqrt(n);for (int i = 2; i <= k; i++){if (n%i == 0)return false;}return true;}/************************************************************************/// 由于素数环只有20位,所以所求的数最大为39,将3-39这37个数是否为素数提前算出来存入b数组//计算时只需查表就能得知,这样可以提高性能。/************************************************************************/void init(){for (int i = 0; i < 21; i++){a[i] = i;}for (int j = 3; j < 40; j++){b[j] = 0;if (isprime(j))b[j] = 1;}}void printresult(){for (int i = 1; i < 21; i++)cout << " " << a[i];cout << endl;}void search(int m){int i;if (m > 20){//当m == 20时,还需判断环首和环尾是否为素数int temp = a[1] + a[20];if (b[temp]){printresult();system("pause");}return;}else{for (i = m; i < 21; i++){swap(a[m], a[i]);int temp = a[m - 1] + a[m];if (b[temp])search(m + 1);swap(a[m], a[i]);}}}void main(){init();search(2);system("pause");}
0 0
- 算法——素数环
- noj算法题——素数环
- 数论——素数算法
- 算法——筛法求素数
- 算法——求素数
- 并行算法例子——素数算法
- 1007. 素数对猜想 (20)——素数判断算法
- 算法提高 素数求和 ——筛法求素数
- 算法练习--素数环
- 【基础算法】素数环
- Java算法——判断素数
- 算法——素数判定方法
- 素数判定——Miller Rabin 算法
- 素数问题——Meisell-Lehmer算法
- 穷举算法—素数幻方
- Uva524—素数环
- 素数环的算法分析
- PAT算法笔记(三)————数素数
- android开发 - pull解析器
- NYOJ---题目1172unlucky number
- Http协议与TCP协议简单理解
- UVa 116 - Unidirectional TSP
- Board Wrapping
- 算法——素数环
- 虚拟机扩展磁盘空间
- Android探究之View.isInEditMode()报错
- IT各个层次角色与职责
- OSI模型简介
- 网狐6603编译转换
- hdu1240--asteriod(搜索)
- 单链表的创建、插入、删除、排序以及逆置
- View not attached to window manager