请为我用c语言写一段判断一个正整数是不是素数的代码
时间: 2024-10-28 10:07:25 浏览: 29
在C语言中,判断一个正整数是否为素数可以通过以下简单的算法实现,也就是著名的试除法。以下是对应的代码:
```c
#include <stdio.h>
// 判断一个数是否为素数
int isPrime(int num) {
if (num <= 1) { // 小于等于1的数不是素数
return 0;
} else if (num <= 3) { // 2和3是特例,它们是素数
return 1;
} else if (num % 2 == 0 || num % 3 == 0) { // 能被2或3整除的不是素数
return 0;
}
int i = 5;
while (i * i <= num) { // 只需检查到根号下即可,因为大于根号的因数一定会有一个小于根号
if (num % i == 0 || num % (i + 2) == 0) {
return 0;
}
i += 6; // 跳过所有3的倍数的检查,因为已经检查了6k±1
}
return 1; // 如果没有找到因子,则是素数
}
int main() {
int number;
printf("Enter a positive integer: ");
scanf("%d", &number);
if (isPrime(number)) {
printf("%d is a prime number.\n", number);
} else {
printf("%d is not a prime number.\n", number);
}
return 0;
}
```
这段代码首先处理特殊情况(小于等于1和2、3),然后从5开始递增检查,每次跳跃6,只检查6k±1这样的数作为潜在因子,因为已知素数不可能同时是3的倍数。
阅读全文