问题描述:将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环。

n=20时,下面的序列就是一个素数环:

1 2 3 4 7 6 5 8 9 10 13 16 15 14 17 20 11 12 19 18

下面的程序利用回溯法穷举所有可能性,试图找到一个解。既然是环,第一个位置可以随意取一个数值(好象设置为1比其它数计算起来都要快,不信你把程序中的

ring[0] 设置为18计算一下。另外n好象只是偶数的时候才存在素数环)。这个问题应该还有很多种解法,和递归、图的 DFS

搜索、哈密顿环都有关系。我的问题是,能否写出一个比较高效的算法计算出对于任意n的全部素数环序列?

#include

#include

#define LEN 20

int primeRing(int ring[], int b[], int n);

int isPrime(int n);

int main(void)

{

int i, ring[LEN]={0}, b[LEN]={0};

ring[0] = 1;

b[0] = 1;

if( primeRing(ring, b, 1) )

{

printf("\n\nThe prime ring is :

");

for(i=0; i

i++)

printf("%d ",

ring[i]);

printf("\n");

}

else

printf("\n\nNot found!\n");

return 0;

}

int primeRing(int ring[], int b[], int n)

{

int i;

if( n==LEN )

return

isPrime(ring[n-1]+ring[0]);

printf("\nCalculating ring[%d] = ", n);

for(i=1; i

if( b[i]==0

&& isPrime((i+1)+ring[n-1]) )

{

b[i] =

1;

ring[n] =

i+1;

printf("%d ",

ring[n]);

if(

primeRing(ring, b, n+1) )

return

1;

else

b[i]

= 0;

}

return 0;

}

int isPrime(int n)

{

int i, t, f=1;

t = sqrt(n);

for(i=2; i<=t; i++)

if( n%i==0 )

{

f = 0;

break;

}

return f;

}

质数环问题c语言,素数环问题相关推荐

  1. 质数表因式分解 c语言,素数表+因式分解+完美数

    1 素数 素数即质数,指在大于1的自然数中,除了1和此整数自身外无法被其它自然数整除的数. 1.1 试除法 该方法用于验证一个数是否为素数.例求x是否为素数,只需要验证1到中是否存在一个数位x的约数, ...

  2. java编程实现素数环_回溯法解决素数环

    #include #include using namespace std;#define N 100000int isp[2 * N];int a[N];int visited[N];int is_ ...

  3. 素数环 与 算法 全排列

    在说起全排列前,先说一下昨天碰到的一个题目(答案不是我做出来的,但是我感觉有好多个亮点,贴出来方便日后的学习): 素数环 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 ...

  4. 美丽的项链(素数环)(回溯法)

    题目描述 520马上就要到了,丁丁妹在思考送自己的室友什么礼物能够彰显她深深的室友之爱. 由于丁丁妹最近沉迷于数学,于是她想出了一个绝(土)妙(味)的礼物--素数项链. 具体而言,素数项链是一个由1~ ...

  5. 素数环问题 DFS

    素数环问题 将从1到n这n个整数围成一个圆环, 若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环. 现要求输入一个n,求n个数围成一圈有多少种素数环, 规定第一个数字是1.写出相应的 ...

  6. 素数环问题(回溯法)

    素数环是一个计算机程序问题,指的是将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环. 现在要求输入一个n,求n个数围成一圈有多少种素数环,规定第一个 ...

  7. 素数环问题---深度搜索遍历

    1264: 素数环 时间限制: 1 Sec  内存限制: 128 MB 提交: 29  解决: 8 [提交][状态][讨论版] 题目描述 有一个长度为n的环形序列由1,2,3,...,n组成,环中相邻 ...

  8. C语言素数分解prime factoriziation算法(附完整源码)

    素数分解prime factoriziation算法 素数相关结构体定义 实现了以下相关接口 C语言素数分解prime factoriziation算法完整源码(定义,实现,main函数测试) 素数相 ...

  9. C语言素数筛选法(prime seive) 算法(附完整源码)

    素数筛选prime seive算法 C语言素数筛选prime seive算法完整源码(定义,实现,main函数测试) C语言素数筛选prime seive算法完整源码(定义,实现,main函数测试) ...

最新文章

  1. shell中的for循环语句
  2. Macbook air 键盘标点符号怎么输出?
  3. boost::mp11::mp_replace相关用法的测试程序
  4. MMIX机器简要介绍
  5. 使用思科模拟器Packet Tracer与GNS3配置IPv6隧道
  6. 如何让图片充满excel单元格_如何在Excel单元格建立下拉菜单
  7. 基于Tensorflow + Opencv 实现CNN自定义图像分类
  8. 关于Websockets问题:
  9. Vue:默认的App.vue
  10. Java设计模式之Adapter模式
  11. 语言学句法分析树形图怎么画_树形图(句法)
  12. Html 设置整个页面的背景颜色
  13. springboot 实现长链接转短链接
  14. 教你怎么搞定P2P终结者的网速限制
  15. Visual C++ 2010如何解决程序运行闪退问题
  16. 我在51CTO微职位学软考——东隅已逝,桑榆非晚
  17. python timer详解_python线程定时器Timer实现原理解析
  18. hadoop ha搭建 namenode格式化失败等错误
  19. 2016年8月10日 星期三 --出埃及记 Exodus 16:10
  20. 水清冷冷:After Effects 2020(AE2020)图文版安装教程(附工具)

热门文章

  1. Graph cut [转]
  2. tcp连接的三次握手
  3. C# 总结const、 readonly、 static三者区别:
  4. 序列化类型为XX的对象时检测到循环引用
  5. 【java.lang.UnsupportedClassVersionError】版本不一致出错
  6. Java中,一切皆是对象——java中的对象类型与基本数据类型的区别
  7. PHP扩展高性能日志系统SeasLog简单上手
  8. ElasticSearch-安装以及常见错误(自己测试过yum install -y log4j* )
  9. Linux下安装MongoDB3.2.5(自测)
  10. Vue报错Module not found: Error: Can‘t resolve ‘less-loader‘