#include <stdio.h>
#include <stdbool.h> // 引入布尔类型
// 函数声明:判断一个整数是否为素数
bool isPrime(int num);
int main() {
int number;
// 提示用户输入一个整数
printf("请输入一个整数:");
scanf("%d", &number);
// 调用函数判断是否为素数
if (isPrime(number)) {
printf("%d 是素数。\n", number);
} else {
printf("%d 不是素数。\n", number);
}
return 0;
}
// 函数定义:判断一个整数是否为素数
bool isPrime(int num) {
// 如果输入的数字小于等于1,直接返回false,因为1和负数都不是素数
if (num <= 1) {
return false;
}
// 从2开始到sqrt(num)(包括),检查是否有能整除num的数
// 如果存在这样的数,则num不是素数
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) { // 如果num能被i整除
return false; // 则num不是素数
}
}
// 如果没有找到能整除num的数,则num是素数
return true;
}
代码解释
-
函数
isPrime
的作用:- 这个函数的目的是判断一个整数是否为素数。
- 如果输入的数字小于等于1,直接返回
false
,因为1和负数都不是素数。 - 对于大于1的数字,我们只需要检查从2到
sqrt(num)
(即num
的平方根)之间是否有能整除num
的数。如果找到这样的数,则num
不是素数;否则,num
是素数。
-
为什么只需要检查到
sqrt(num)
:- 如果一个数
num
不是素数,那么它必然有一个因数小于或等于它的平方根。例如,如果num
能被a
整除,那么num = a * b
。如果a
和b
都大于sqrt(num)
,那么a * b
会大于num
,这与num = a * b
矛盾。因此,我们只需要检查到sqrt(num)
即可。
- 如果一个数
-
main
函数的作用:main
函数是程序的入口。- 它提示用户输入一个整数,然后调用
isPrime
函数来判断该整数是否为素数,并输出结果。
示例运行
假设用户输入7
:
请输入一个整数:7
7 是素数。
假设用户输入10
:
请输入一个整数:10
10 不是素数。
这个程序简单易懂,同时展示了函数的使用和循环的基本逻辑。希望这个示例对你有帮助!如果你有其他问题,欢迎下方提问。