You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修复C语言质因数分解函数的异常输出格式问题

问题分析

你的代码存在4个核心逻辑错误,直接导致输出异常:

  • power变量作用域错误:全局只声明了一个power变量,遍历每个新质因数时没有重置,会继承上一个质因数的计数结果
  • 输出逻辑放在了内层while循环里:每除一次质因数就输出一次内容,同一个质因数会被重复打印多次,比如分解8的过程中会连续打印3次2和对应幂次
  • 连接符判断逻辑错误:仅判断factor>=3才加连接符x,无法适配第一个质因数大于2的场景,也无法正确区分是否是第一个输出的质因数
  • 幂次输出逻辑错误:只要power>=1就打印^%d,不符合幂次为1时仅输出质因数本身的需求,且每次循环都打印幂次,会导致内容重复拼接
修正后代码
void prime_factors(int num)
{
    // 标记是否是第一个输出的质因数,用来控制连接符打印
    int first_factor = 1;
    for (int factor = 2; num > 1; ++factor)
    {
        int power = 0;
        // 先统计完当前factor的所有幂次
        while (num % factor == 0)
        {
            num /= factor;
            power++;
        }
        // 只有当前factor确实是质因数(幂次>0)才输出
        if (power > 0)
        {
            // 不是第一个质因数先打印连接符
            if (!first_factor)
            {
                printf(" x ");
            }
            first_factor = 0;
            // 输出质因数
            printf("%d", factor);
            // 幂次大于1才输出^幂次
            if (power > 1)
            {
                printf("^%d", power);
            }
        }
    }
}
效果验证

和你给出的错误示例对应,修正后输出符合预期:

  • 2 >> 2
  • 6 >> 2 x 3
  • 8 >> 2^3
  • 9 >> 3^2

内容的提问来源于stack exchange,提问作者sznailc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:57:02