不离谱 2022-11-05 14:29 采纳率: 66.7%
浏览 34

c语言求1000以内的所有完数问题

img


为什么我的代码运行没有结果?
不明白是哪个地方出错了?
int main()
{ int p,i,sum=0;
printf("1000以内的所有完数为");
for(p=2;p<1000;p++)
{
for(i=1;i<p;i++)
{
if(p%i==0)
{
sum=sum+i;
}
if(p==sum)
{
printf("%d",p);
}
}
}
return 0;
}

  • 写回答

4条回答 默认 最新

  • JarodYv 领域专家: 人工智能技术领域 2022-11-05 14:59
    关注

    2处地方有问题:

    1. 每次开始外层循环时需要将sum重置为0;否则sum会一直累加
    2. 判断因子和是否等于此数的逻辑要移到外层循环中

    我给你重新写了一遍,代码见下方。如果对你有帮助,请采纳。

    #include <stdio.h>
    
    int main() {
        int p, i, sum;
        printf("1000以内的所有完数为\n");
        for (p = 2; p < 1000; p++) {
            sum = 0;
            for (i = 1; i < p; i++) {
                if (p % i == 0) {
                    sum += i;
                }
            }
            if (p == sum) {
                printf("%d ", p);
            }
        }
        return 0;
    }
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 11月5日