Онлайн компилятор C

#include <stdio.h> int is_prime(int n){ int num=2, result; if(n==0&&n==1&&n==2){ return 0; } while(num<n){ result=n%num; if(result==0){ return 0; } num++; } return 1; } int main() { int x; scanf("%d", &x); printf("%d",is_prime(x)); return 0; }
这段代码定义了一个判断质数的函数 `is_prime`,并在 `main` 中读取一个整数然后输出判断结果(1表示质数,0表示非质数)。

- 条件判断 `if(n==0&&n==1&&n==2)` 逻辑有误,因为一个数不可能同时等于0、1和2。这里应该分别处理这些特殊情况,比如0和1不是质数,2是质数。
- 循环从 `num=2` 开始检查是否能整除 `n`,但循环条件 `num<n` 会漏掉 `n` 本身。实际上只需要检查到 `n` 的平方根即可,但当前逻辑中如果 `n` 是质数,循环会一直运行到 `num` 等于 `n` 才结束,效率较低且对于 `n=2` 会直接跳过循环返回1,但你的初始条件已经错误地处理了2。