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. #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;
} #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]