什么是素数
素数是指在大于1的正整数中,除了1和它本身以外,不能被其他正整数整除的数。
比如2、3、5、7、11、13等都是素数,而4、6、8、9、10等都不是素数。
判断素数的思路
判断一个数n是否为素数,可以从2开始,一直判断到n-1。如果在这个范围内没有可以整除n的数,那么n就是素数。
但是这样的算法效率较低,因为n/2到n-1这些数已经重复判断了一遍。我们可以从2开始判断到sqrt(n),因为如果n能够被一个大于sqrt(n)的数整除,那么它同样也能够被小于sqrt(n)的数整除。
因此,判断素数的代码如下:
int is_prime(int n) {
// 特判
if (n <= 1) {
return 0;
}
// 循环判断
for (int i = 2; i * i <= n; i ) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
判断素数的优化
虽然上面的代码已经能够正确地判断素数,但是它还是有优化的空间。
其中一个优化方法就是从3开始判断,并且判断奇数即可,因为偶数都能够被2整除,不可能是素数。
代码如下:
int is_prime(int n) {
// 特判2
if (n == 2) {
return 1;
}
// 特判偶数
if (n % 2 == 0 || n <= 1) {
return 0;
}
// 循环判断奇数
for (int i = 3; i * i <= n; i = 2) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
这样就能够进一步减少重复判断,提高代码的效率。
本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/cpp7fca.html
郑重声明:
本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
我们不承担任何技术及捕鱼10元起上10元下的版权问题,且不对任何资源负法律责任。
如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。
如有侵犯您的捕鱼10元起上10元下的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!