2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > C语言判断一个数是否为素数(质数) C语言经典例题计算素数 C语言二级重点

C语言判断一个数是否为素数(质数) C语言经典例题计算素数 C语言二级重点

时间:2018-10-30 21:11:04

相关推荐

C语言判断一个数是否为素数(质数) C语言经典例题计算素数 C语言二级重点

素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如29就是素数,因为它不能被 2~28的任一整数整除。

(思路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 之间有无因子即可。

思路一实现:

#include <stdio.h>int main(){int n,i;printf("请输入一个数:\n");scanf("%d",&n);for(i=2;i<n;i++)if(n%i==0)break;if(i<n)printf("%d不是素数\n",n);elseprintf("%d是素数\n",n); return 0;}

思路二实现:

#include <stdio.h>#include <math.h>int main(){int n,i,k;printf("请输入一个数:\n");scanf("%d",&n);k = sqrt(n);for(i=2;i<=k;i++)if(n%i==0)break;if(i<=k)printf("%d不是素数\n",n);elseprintf("%d是素数\n",n); return 0;}

看一看你更喜欢哪一种呢,相比思路一思路二的运算量更加小,可以更快的算出,减少CPU负担

我是虎哥,大家多学习多交流——星光不问赶路人,时光不负有心人

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。