玩儿泥巴 2021-12-30 10:44 采纳率: 100%
浏览 37
已结题

c语言 完数用乘来解想知道哪里错了

完数某个数除了本数以外的因子相加等于它本身的数 这个题用除更方便,但是我是用的乘,下面是我的代码,想知道哪里错了,感谢!
例6=1乘6也=2乘3且6=1+2+3,则6是完数
输入L,R
输出
在区间【L,R】的所有完数

img


#include <stdio.h>

int main() {
int L, R, i, z, n, j;
int k = 0, h = 0;
scanf("%d%d", &L, &R);
n = z / 2;
for (z = L; z <= R; z++) {
for (i = 0; i < n; i++) {
for (j = n; j < z; j++) {
if (z == (i * j)) {
k = k + i;
h = h + j;
}
}
}
if (z == (k + h))
printf("%d", z);
}
return 0;
}

  • 写回答

3条回答 默认 最新

  • 俺不理解 2021-12-30 11:08
    关注

    加了注释,你参考下改改

    int main() {
        int L, R, i, z = 0, n, j;
        int k = 0, h = 0;
        scanf("%d%d", &L, &R);
        for (z = L; z <= R; z++) {
            // 这个n要在每一轮置为 z 开根
            n = sqrt(z);
    
            // k 和 n 每轮要清空
            k = 0;
            h = 0;
            // i 可以取到 n
            for (i = 1; i <= n; i++) {
                // j 也可以取到 z,不然1没有办法进入 k
                for (j = n; j <= z; j++) {
                    if (z == (i * j)) {
                        // i 和 j 加进来的时候,要判断 i和j 是否等于 z
                        if(i != z) {
                            k = k + i;
                        }
                        if(j != z) {
                            h = h + j;
                        }
                    }
                }
            }
            if (z == (k + h))
                printf("%d", z);
        }
        return 0;
    }
    

    我的测试输出:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月30日
  • 已采纳回答 12月30日
  • 修改了问题 12月30日
  • 修改了问题 12月30日
  • 展开全部

悬赏问题

  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab