这段代码试图用递归方式判断一个数是否为素数,但存在几个关键问题。 首先,`sum` 变量在每次递归调用时都会被重新初始化为0,因此无法累计因子的个数。其次,`main` 函数中调用 `is_prime(m,n)` 时,第二个参数传入了 `n`,这不符合函数设计的逻辑——通常应该从2开始检查除数。 - 检查 `sum` 变量的作用域:它在每次递归调用时都会重新创建,无法保存之前的结果。你需要一种方式让计数在递归过程中持续累积。 - 思考 `is_prime` 函数的第二个参数应该从什么值开始调用。在 `main` 中,你传入了 `n`,但 `n` 是用户输入的上限,不是除数起始值。