C语言进阶:[10]素数的判定
在求素数的题目中基本上有两种:
一判断给定的数是否是素数,
二筛选出小于给定的数的所有素数。
基本上就是这两个方面。首先素数是不等于1,它的因子只有1和它本身。判断一个数是否为素数,可以用大于1小于给定数的所有数去除给定数,如果有任何一个能够除尽,就表示是合数,反之是素数。代码如下:
![C语言进阶:[10]素数的判定](https://exp-picture.cdn.bcebos.com/a13bbe10bc33ec38adb3a65c295f0c14c27b3c5c.jpg)
因为C语言中没有bool类型,我们用int表示结果,当result等于1是表示是合数,等于0表示是素数。
第二种情况有两种解决办法:
1.利用第一种的函数,循环进行判断。prim函数同上。
![C语言进阶:[10]素数的判定](https://exp-picture.cdn.bcebos.com/023cff37c97622bcd0cd70d4a05fd5460596285c.jpg)
我们选择了小于1000的素数,结果如下:
![C语言进阶:[10]素数的判定](https://exp-picture.cdn.bcebos.com/cf6d451b1edef4dc6931acac45ecd3d969750c5c.jpg)
2.利用埃拉托色尼选筛法,主要思想是从最小的素数开始依次把此素数的倍数去掉,直到设定的数为止,直到素数到达给定的数为止。我们以简单的方式来做。代码如下
![C语言进阶:[10]素数的判定](https://exp-picture.cdn.bcebos.com/059057299a88391331ed535d26bcbe2f47707c5c.jpg)
效果如图:
![C语言进阶:[10]素数的判定](https://exp-picture.cdn.bcebos.com/54a89daee8d7592a13e75fcb9f31dfb6326c675c.jpg)
两次结果相同。希望对大家学习素数的时候有用。
(共篇)上一篇:求最大公约数和最...|下一篇:声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:139
阅读量:57
阅读量:89
阅读量:90
阅读量:128