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 之间有⽆因⼦即可。
思路⼀实现:
1#include <stdio.h>
2int main()
3{
4 int n,i;
5 printf("请输⼊⼀个数:\n");
6 scanf("%d",&n);
7 for(i=2;i<n;i++)
8 if(n%i==0)
9 break;
10 if(i<n)
11 printf("%d不是素数\n",n);
12 else
13 printf("%d是素数\n",n);
14 return 0;
15}
思路⼆实现:
c++判断素数1#include <stdio.h>
2#include <math.h>
3int main()
4{
5 int n,i,k;
6 printf("请输⼊⼀个数:\n");
7 scanf("%d",&n);
8 k = sqrt(n);
9 for(i=2;i<=k;i++)
10 if(n%i==0)
11 break;
12 if(i<=k)
13 printf("%d不是素数\n",n);
14 else
15 printf("%d是素数\n",n);
16 return 0;
17}
看⼀看你更喜欢哪⼀种呢,相⽐思路⼀思路⼆的运算量更加⼩,可以更快的算出,减少CPU负担
我是虎哥,⼤家多学习多交流 ——星光不问赶路⼈,时光不负有⼼⼈
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论