// 统计区间 [a, b] 内素数的个数(包含端点),a ≤ b
#include <stdio.h>
int main()
{
int a, b;//输入值a,b==区间端点值
scanf("%d %d", &a, &b);
int count = 0; // 素数计数器count // 素数计数器
for (int i = a; i <= b; i++)// [a, b] 内当前经历的整数i
{
if (i < 2)//特殊;输入值小于2(最小素数为2=》素数大于等于2)
{
continue;//// 跳过本次循环,继续判断下一个数
}
else
{
//试除法—— 素数判断
int is_prime = 1;//标志变量(也叫标记)is_prime
//is_prime = 1 表示“暂时认为 i 是素数”(1 在这里代表“真”或“是”)。
//is_prime = 0 表示“确认 i 不是素数”(0 代表“假”或“否”)。
for (int d = 2; d * d <= i; d++)//i的因数d(除1和i本身外)
{
if (i % d == 0)//该判断对象 有除1和i本身外 的其他因数
{
is_prime = 0; // 标记不是素数
break;//只要有有除1和i本身外 的其他因数,就不是素数
//故不用继续循环查找其他因子
}
if (is_prime==1)// 如果仍然是素数
{
count++;// 素数+1
}
}
}
printf("%d\n", count);
return 0;
}