C语言如何优化这个素数判断算法?
时间: 2024-11-12 22:38:56 浏览: 46
C语言程序判断回文素数
在C语言中,可以对素数判断算法进行一些优化。首先,由于偶数(除了2之外)都不是素数,我们可以立即返回`false`,跳过所有偶数检查。其次,不需要检查大于√n的所有数作为因子,因为若n有因子m,必定有另一个因子n/m(m > √n)。这样,我们只需要迭代到`sqrt(number)`即可。
下面是优化后的代码:
```c
#include <stdio.h>
#include <math.h> // 引入math库以便使用sqrt()
int is_prime(int num) {
if (num <= 1 || (num > 2 && num % 2 == 0)) {
return num == 2; // 除了2,其它偶数都不是素数,但2例外
}
int sqrt_num = sqrt(num);
for (int i = 3; i <= sqrt_num; i += 2) {
if (num % i == 0) {
return 0; // 如果找到因子,直接返回false
}
}
return 1; // 如果没有找到因子,num是素数
}
int main() {
int number;
printf("请输入一个2到100之间的整数: ");
scanf("%d", &number);
if (is_prime(number)) {
printf("%d是素数\n", number);
} else {
printf("%d不是素数\n", number);
}
return 0;
}
```
阅读全文