在线编译器 C

#include <stdio.h> int is_prime(int n, int delitel){ if (n % delitel != 0){ return 0; }else{ return 1; } return (n, delitel + 1); } int main() { printf("%d", is_prime(7, 2)); return 0; }
这段代码试图判断一个数是否为质数,但逻辑有误。函数 `is_prime` 只检查了 `n` 是否能被 `delitel` 整除,然后直接返回结果,并没有递归地检查其他可能的除数。

- 函数中的 `return (n, delitel + 1);` 这一行永远不会执行,因为前面的 `if-else` 已经让函数返回了。递归调用应该放在条件判断中,而不是在 return 语句里用逗号表达式。
- 质数判断需要检查从 2 到 n-1 的所有整数是否能整除 n,如果都没有整除,才是质数。当前代码只检查了一个除数就返回了结果。