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

如何计算输入数字的正约数之和?C语言代码求助

正约数求和功能的代码修改方案

以下是修复后的完整代码,同时标注关键修改点:

#include<stdio.h>
#pragma warning (disable:4996)

int main() {
    int input, sum = 0; // 初始化求和变量为0

    printf("Input the number:");
    scanf("%d", &input);
    printf("\nThe positive divisor:");

    // 若需将输入数字自身纳入正约数,将循环条件改为 i <= input
    for (int i = 1; i < input; i++)
    {
        if (input % i == 0)
        {
            printf("%d\t", i);
            sum += i; // 累加每个找到的正约数
        }
    }
    
    printf("\nThe sum of the divisor is:%d", sum); // 直接输出求和结果,无需取地址

    return 0;
}

关键修改说明:

  • 初始化求和变量:原代码中sum未初始化,直接使用会触发未定义行为,必须初始化为0才能保证累加逻辑正确。
  • 添加约数累加逻辑:在判定i是输入数的约数后,通过sum += i将当前约数计入总和。
  • 修正输出参数错误:原代码中printf传入了&sum(变量的内存地址),这会输出地址值而非实际求和结果,改为直接传入sum即可。
  • 可选调整:包含自身约数:正约数的标准定义包含数字本身(例如6的正约数为1、2、3、6),如果需要符合这个定义,将循环条件从i < input修改为i <= input即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 02:05:17