#include<iostream>
using namespace std;
int main()
{
for(int a=2;a<=1000;a++)
{
int b=0;
for(int i=1;i<a;i++)
{
if(a%i==0)
b+=i;
}
if(a==b)
cout<<a<<endl;
}
return 0;
}
就上面这段代码,是用来求1000以内所有完数的
我个人感觉是因为变量的作用域问题,但是又说不上来是哪里出错了
现在这位置,每个a都要把b初始化为0,重新开始计算。
放到外面,则b一直是增长的,增长速度比a要快的多,满足不了a==b
放在外面的话,循环里面修改了值,下次循环还会继续使用被修改过的值;
放在循环里面,每次循环都重新定义为0