素数的定义:除了1和它本身,不能被其他数整除那么这个数就是素数
#include <stdio.h> // 包含基本输入输出头文件
int main()
{
int n = 0;
printf("请输入1个数判断是否素数:");
scanf("%d", &n); // scanf()来读取用户输入的值
int i = 0;
for (i = 2; i < n; i++) // 根据素数的定义,这里的i从2开始,结束是n
{ // 比如用户输入7,那么i从2开始,结束就是6
if (n % i == 0) // 如果n能整除i,那么这个数就不是素数
{ // 比如用户输入10,那么10%2==0,不满足素数的定义
printf("%d不是素数\n", n);
break; // 判断这个数是素数一次就行了,不需要多次,所以这里直接break跳出for循环
}
}
if (i == n) // 这里for循环执行完了,那么这个数就是素数
{ // 比如用户输入7,上面的for循环的i从2到6都不能整除7,这时候i==7跳出了for循环
printf("%d是素数\n", n);// 打印素数
}
return 0;
}
也可以使用sqrt()开平方来判断是否为素数,这样判断次数变少,程序执行速度就会更快
#include <stdio.h> // 包含基本输入输出头文件
#include <math.h> // 引入math库
int main()
{
int n = 0;
printf("请输入1个数判断是否素数:");
scanf("%d", &n); // scanf()来读取用户输入的值
if (n <= 1) { // <=1 直接打印不是素数
printf("%d 不是素数",n);
}
else {
int i = 0;
for (i = 2; i <= sqrt(n); i++) // 这里引入开平方函数sqrt()也可以解决,也就是找这个数的因子
{ // 比如 20这个数 可以拆成 20=10*2 or 20=4*5
if (n % i == 0) // 不管是什么数, 这个数其中一个因子恒 <= 这个数开平方
{ // 比如sqrt(20) = 4 20=10*2 的 因子2 和 20=4*5 因子4
printf("%d不是素数\n", n);
break;
}
}
if (i > sqrt(n)) // 这里for循环执行完了,那么这个数就是素数
{
printf("%d是素数\n", n);// 打印素数
}
}
return 0;
}
测试运行结果: