#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 不是素数。
这个程序简单易懂,同时展示了函数的使用和循环的基本逻辑。希望这个示例对你有帮助!如果你有其他问题,欢迎下方提问。