小白的首席大弟子 2021-11-16 22:49 采纳率: 84.6%
浏览 23
已结题

请问各位,求1000以内的为完数的自然数,我错在哪了,输出老是错误,能帮纠正一下吗


#include<stdio.h>
void get_ws_ys();
int main()
{
    get_ws_ys();
    return 0;
}
void get_ws_ys()
{
    int t,i,j,k=1,factor[]={1},s=1;
    for(i=1;i<=1000;i++)
    {
        if(i==1)
        {
        printf("1为完数\n");
        printf("其因子有1个\n");
        printf("为1\n");
        continue;
        }
        if(i==2)
        {
        continue;
    }
        for(j=2;j<=i-1;j++)
        {
            if(i%j==0)
            {
                s+=j;
                factor[k]=j;
                k++;
            }
        }
        if(s==i)
        {
            printf("%d为完数\n",i);
            printf("其因子有%d个\n",k);
            for(t=0;t<=k-1;t++)
            {
                printf("为%d",factor[k]);
            }
        }
    }
    
}
  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-11-17 09:26
    关注

    修改如下,供参考:

    #include<stdio.h>
    void get_ws_ys();
    int main()
    {
        get_ws_ys();
        return 0;
    }
    void get_ws_ys()
    {
        int t, i, j, k = 1, factor[20], s = 1;  //修改
        for (i = 1; i <= 1000; i++)
        {
            if (i == 1)
            {
                printf("1为完数\n");
                printf("其因子有1个\n");
                printf("为1\n");
                continue;
            }
            for (t = 0; t < 20; t++)  //修改
            {
                factor[t] = 0;
            }
            for (j = 2, k = 1, factor[0] = 1, s = 1; j <= i - 1; j++)  //修改
            {
                if (i % j == 0)
                {
                    s += j;
                    factor[k] = j;
                    k++;
                }
            }
            if (s == i)
            {
                printf("\n%d为完数", i);   //修改
                printf("其因子有%d个为:\n", k); //修改
                for (t = 0; t <= k - 1; t++)
                {
                    printf("%5d", factor[t]); //修改
                }
            }
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏

报告相同问题?

问题事件

  • 系统已结题 11月29日
  • 已采纳回答 11月21日
  • 创建了问题 11月16日

悬赏问题

  • ¥15 关于移动机器人坐标计算
  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法