加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C语言求孪生素数

(2018-09-21 15:04:26)
标签:

365

c语言

it

编程

教育

分类: C语言经典100例

问题描述

所谓孪生素数指的是间隔为2的两个相邻素数,因为它们之间的距离已经近的不能再近了,如同孪生兄弟一样,所以将这一对素数称为孪生素数。

显然,最小的一对孪生素数是(1,3)。我们可以写出3?100以内的孪生素数,一共有8对,分别是(3,5),(5,7),(11,13),(17,19),(29,31),(41,43),(59,61)和(71,73)。随着数字的增大,孪生素数的分布也越来越稀疏,人工寻找孪生素数变得非常困难。

本题要解决的问题是:编程求出3?1000以内的所有孪生素数。

问题分析

孪生素数是指:若a为素数,且a+2也是素数,则素数a和a+2称为孪生素数。

要编程求解的问题是找出3?1000以内的所有孪生素数,因此很自然的可以使用穷举法对3?1000以内的每一个整数n进行考察,先判断n是否为素数,再判断n+2是否为素数,如果n和n+2同时为素数,则(n,n+2)就是一对孪生素数,将其打印输出即可。

算法设计

在算法设计中需要采用循环结构。

在判断是否为素数时可以定义一个函数prime(),每次判断整数n是否为素数时都将n作为实参传递给函数prime(),在prime()函数中使用前面介绍过的判别素数的方法进行判断。如果n为素数,则primeO函数返回值为1,否则prime()函数返回值为0。

程序流程图:
https://mmbiz.qlogo.cn/mmbiz_png/sMARbZtTY5fmmJqc62USYuOX9Ol7EhdjSpEVKRaXKvC3chodUVpLdcRZIdsze2bHF1Qg7foichkib0QGNuY6fZiag/0?wx_fmt=png

下面是完整的代码:


  1. #include

  2. #include


  3. int prime(int n)

  4. {

  5. int j;

  6. long k;

  7. k=sqrt(n)+1;

  8. for(j=2; j<=k; j++)

  9. {

  10. if (n%j == 0)

  11. {

  12. return 0;  

  13. }

  14. }

  15. return 1;  

  16. }


  17. int main ()

  18. {

  19. int i, count=0;

  20. printf("The twin prime pairs between 3 and 1000 are: \n");

  21. for (i=3; i<</span>1000; i++)

  22. if( prime(i) && prime(i+2) )

  23. {

  24. printf("(%-3d,=)  ", i, i+2);

  25. count++;

  26. if(count%5 == 0)  

  27. printf("\n");

  28. }


  29. return 0;

  30. }

运行结果:C/C++学习交流群:231662552
The twin prime pairs between 3 and 1000 are:
(3  5)  (5  7)  (11 , 13)  (17 , 19)  (29 , 31) 
(41 , 43)  (59 , 61)  (71 , 73)  (101,103)  (107,109) 
(137,139)  (149,151)  (179,181)  (191,193)  (197,199) 
(227,229)  (239,241)  (269,271)  (281,283)  (311,313) 
(347,349)  (419,421)  (431,433)  (461,463)  (521,523) 
(569,571)  (599,601)  (617,619)  (641,643)  (659,661) 
(809,811)  (821,823)  (827,829)  (857,859)  (881,883)  


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有