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

#include <stdio.h> int is_prime(int n){ int num=2, result; if(n==0||n==1){ 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表示不是)。

- 函数 `is_prime` 从2开始检查到 `n-1`,如果发现 `n` 能被某个数整除,就返回0(不是质数);否则返回1(是质数)。对于0和1,直接返回0。

- 你的代码逻辑基本正确,但有一个小问题:当输入为2时,`while(num<n)` 条件 `2<2` 不成立,循环不执行,直接返回1,这是正确的,因为2是质数。

- 不过,你的代码效率可以优化:检查到 `n` 的平方根即可,不需要到 `n-1`。但这不是错误,只是性能建议。