内卷肥牛 2023-08-07 00:27 采纳率: 100%
浏览 8
已结题

求指导一下c语言输出完数问题?

左边是题目,右边是我写的代码👇

img


我一直错“最大范围”这个问题,然后看了一下别人写的代码加了一行(红色标出处),虽然答案对了可是还是无法理解pta的评分点是什么意思👇

img


谢谢你们的答疑解惑🥰

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2023-08-07 10:52
    关注

    1 不是完数, 因为你的代码里不能将 1 排除,当 number = 1 时, 函数里返回值是 1,所以判断出错了。两个函数可以这么写,供参考:

    int factorsum(int number) {
        int s = 0;  
        for (int i = 1; i < number / 2 + 1; i++) {
            if (number % i == 0)  s += i; 
        }
        return s;
    }
    void PrintPN(int m, int n) {
        int ss = 0; 
        for (int i = m; i <= n; i++) {
            if (factorsum(i) == i) {
                ss++;
                printf("%d = 1", i);
                for (int j = 2; j < i / 2 + 1; j++) {
                    if (i % j == 0)  
                        printf(" + %d", j); 
                }
                printf("\n");
            }
        }
        if (ss == 0) 
            printf("No perfect number"); 
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月30日
  • 已采纳回答 9月22日
  • 创建了问题 8月7日

悬赏问题

  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算
  • ¥50 AI大模型精调(百度千帆、飞浆)
  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表
  • ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
  • ¥15 系统2008r2 装机配置推荐一下
  • ¥15 悬赏Python-playwright部署在centos7上