求助各位大佬!
今天在做如标题所示的题目,开始我输入了一下代码:
#include<stdio.h>
int find(int x)
{
int a,s=0;
for(a=1;a<x;a++)
{
if(x%a==0)
s=s+a;
}
if(s==x)
return 1;
}
int main()
{
int n;
for(n=2;n<=10000;n++)
{
if(find(n)==1)
printf("%5d\t",n);
}
return 0;
}
但运行出来是这样的:
随后,我将if(s==x){return 1;}语句放入循环体中,运行结果开始接近正确了,但还是多出了几个错误的数值,如图:
最后,我将返回值由1改正成为s,并将主函数里的判断条件改正,用返回值与n来判断,成功得出正确结果,如图:
虽然成功做出此题,但我仍未理解前两段代码的错误之处,希望可以有大佬帮帮我!谢谢!