m0_74079850 2023-02-16 11:55 采纳率: 96.3%
浏览 42
已结题

使用函数输出指定范围内的完数

这个是题目:

img

img

这个是我的代码


int factorsum( int number )
{
    int i=0,n=number,sum=1;
    for(i=2;i<n;i++)
    {
        if(n%i==0)
        {
            sum+=i;
        }
    }
    return sum;    
}
void PrintPN( int m, int n )
{
    int i=0,sum=0,c=0;
    if(i==1)
    {
      printf("No perfect number");  
    }
    else
    {
    for(i=m;i<=n;i++)
    {
        if( factorsum(i) == i )
        {
            printf("%d = 1",i);
            for(int j=2;j<i;j++)
            {
                if(i%j==0)
                {
                    printf(" + %d",j);
                    c++;
                }
            }
            printf("\n");
            c++;
        }
    } 
    if(c==0)
    {
        printf("No perfect number");
    }
    }
}

请问我写的哪里错误了呢?提交的时候显示部分正确 谢谢

  • 写回答

4条回答 默认 最新

  • 快乐鹦鹉 2023-02-16 12:01
    关注

    17行,if(i==1)不对吧,应该是if(n==1)

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

报告相同问题?

问题事件

  • 系统已结题 2月24日
  • 已采纳回答 2月16日
  • 创建了问题 2月16日