天道8 发表于 2020-11-27 10:46:43

C语言问题求助

#include<stdio.h>
int main()
{
        int wanshu,yinzi_sum,begin,max,i;
        max = 1000;
        begin =1;
        while(begin<=max)
        {
       
                for(i = 1;i<=begin;i++)
                {
                        if(begin%i == 0)
                        {
                                yinzi_sum = yinzi_sum+i;
                        }
                }
                        if(begin == yinzi_sum)
                        {
                                printf("%d为完数\n",begin);
                        }
        begin = begin+1;
        }
}
想求1到1000的完数,但是为什么最终结果只输出了1.

xieglt 发表于 2020-11-27 10:59:15

#include<stdio.h>
int main()
{
        int wanshu,yinzi_sum,begin,max,i;
        max = 1000;
        begin =1;
        while(begin<=max)
        {
                //因子和要初始化为0
      yinzi_sum= 0;
                //循环结束条件不能 <=begin,否则把begin自己也加进去了,为了减少循环次数,可以写成i<=begin/2
                for(i = 1;i<=begin/2;i++)
                {
                       
                        if(begin%i == 0)
                        {
                                yinzi_sum = yinzi_sum+i;
                        }
                }

                if(begin == yinzi_sum)
                {
                        printf("%d为完数\n",begin);
                }
      begin = begin+1;
        }
        return 0;
}

jackz007 发表于 2020-11-27 11:06:22

#include<stdio.h>
int main()
{
      int wanshu , yinzi_sum , begin , max , i ;
      max = 1000                               ;
      begin = 2                              ;            // 修改
      while(begin <= max)
      {
      
                for(yinzi_sum = 0 , i = 1 ; i < begin ; i ++) // 修改
                {
                        if(begin % i == 0)
                        {
                              yinzi_sum = yinzi_sum+i;
                        }
                }
                if(begin == yinzi_sum)
                {
                        printf("%d为完数\n",begin);
                }
                begin = begin + 1 ;
      }
}
页: [1]
查看完整版本: C语言问题求助