Online Compiler C

#include <stdio.h> // 这是一个判断质数的函数 // 如果是质数返回 1,不是质数返回 0 int is_prime(int n) { if (n <= 1) { return 0; // 小于等于 1 的数绝对不是质数 } // 用根号法高效判断 for (int i = 2; i * i <= n; i++) { if (n % i == 0) { return 0; // 能被整除,说明不是质数 } } return 1; // 检查完了都没有被整除,说明是质数 } int main() { int a, b; // 读入两个数,注意要给 scanf 两个“指路手势” &a 和 &b if (scanf("%d %d", &a, &b) != 2) { return 0; } int count = 0; // 用来统计质数的个数 // 外层循环:从 a 遍历到 b for (int i = a; i <= b; i++) { if (is_prime(i)) { count++; // 如果当前数字 i 是质数,计数器加 1 } } // 打印最终统计出来的个数 printf("%d\n", count); return 0; }
这段代码的功能是:从标准输入读取两个整数 a 和 b,然后统计并输出区间 [a, b] 内所有质数的个数。代码整体逻辑清晰,使用了根号法判断质数,效率较高。

- 注意输入时 `scanf` 的返回值检查,如果输入格式不正确,程序会直接返回,不会输出任何结果。这可能导致用户无法看到错误提示。
- 当 a 大于 b 时,外层循环 `for (int i = a; i <= b; i++)` 不会执行,count 保持为 0,最终输出 0。你需要确认这是否符合题目要求,或者是否需要处理 a > b 的情况。