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

#include <stdio.h> void print_prime_factors(int n, int delitel){ if(delitel==n){ return; } if(n%delitel==0){ printf("%d",delitel); return print_prime_factors(int n, int delitel); } if(n%delitel!=){ return print_prime_factors(int n, int delitel+1); } } int main(){ int x; scanf("%d",&x); print_prime_factors(x,2); return 0; } return 0; }
这段代码试图用递归方式打印一个整数的质因数,但存在多个语法和逻辑错误。

- 递归调用时,不能重复写 `int n, int delitel`,应该直接写变量名 `n` 和 `delitel`。
- 第8行 `if(n%delitel!=)` 缺少比较对象,应该写 `!= 0` 或类似条件。
- 第3行的递归终止条件 `if(delitel==n)` 不正确,因为质因数分解需要处理到 `n` 变为1为止,而不是当除数等于原始数时停止。
- 第7行 `return print_prime_factors(int n, int delitel);` 会导致无限递归,因为参数没有变化,应该更新 `n` 的值(例如除以 `delitel`)再递归。