C语言判断素数(求素数)(两种方法).pdf

C语言判断素数(求素数)(两种方法).pdf

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

C语言判断素数(求素数)(两种方法)

素数又称质数。所谓素数是指除了1和它本身以外,不能被任何整数整除的数,例如17

就是素数,因为它不能被2~16的任一整数整除。

思路1):因此判断一个整数m是否是素数,只需把m被2~m-1之间的每一个整数去

除,如果都不能被整除,那么m就是一个素数。

思路2):另外判断方法还可以简化。m不必被2~m-1之间的每一个整数去除,只需被

2~之间的每一个整数去除就可以了。如果m不能被2~间任一整数整除,

m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去

除,由于都不能整除,可以判定17是素数。

原因:因为如果m能被2~m-1之间任一整数整除,其二个因子必定有一个小于或等

于,另一个大于或等于。例如16能被2、4、8整除,16=2*8,2小于4,

8大于4,16=4*4,4=√16,因此只需判定在2~4之间有无因子即可。

两种思路的代码请看解析。

思路1)的代码:

1.#includestdio.h

2.

3.intmain(){

4.inta=0;//素数的个数

5.intnum=0;//输入的整数

6.

7.printf((输入一个整数:输入一个整数:);

8.scanf((,num);

9.

10.for(inti=2;inum;i++){

11.if(num%i==0){

12.a++;//素数个数加1

13.}

14.}

15.

16.if(a==0){

17.printf((是素数。是素数。,num);

18.}else{

19.printf((不是素数。不是素数。,num);

20.}

21.

22.return0;

23.}

思路2)的代码:

1.#includestdio.h

2.#includemath.h

3.voidmain(){

4.intm;//输入的整数

5.inti;//循环次数

6.intk;//m的平方根

7.

8.printf((输入一个整数:输入一个整数:);

9.scanf((,m);

10.

11.//求平方根,注意sqrt()的参数为double类型,这里要强制转换m的类型

12.k=(int)sqrt((double)m);

13.for(i=2;i=k;i++)

14.if(m%i==0)

15.break;

16.

17.//如果完成所有循环,那么m为素数

18.//注意最后一次循环,会执行i++,此时i=k+1,所以有ik

19.if(ik)

20.printf((是素数。是素数。,m);

21.else

22.

文档评论(0)

wyg1235 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档