新人求解
刚学编程,有这么个问题:一个数如果恰好等于它的因子之和,这个数则被称为完数,例如,6的因子为1,2,3,而6=1+2+3,因此6就是完数,找出1000之内的所有完数。
我自己做的是这样
#include<iostream>
using namespace std;
int main()
{
int a,b,s;
for(a=1;a<=1000;a++){
b=1;
if(b<=a){
do{
if(a%b==0)s=s+b;
b=b+1;
}
while(b<=a);
if(a=s)cout<<a<<endl;
}
}
return 0;
}
调试是好的,就是出来的不是完数,大哥们帮帮忙看下是怎么回事啊、、
[解决办法]
楼主的思路是对的,只是用错了判断符。
逻辑上1楼改对了。
提个优化建议“if(b<=a){”是没意义的,前面才置了1,
将while(b<=a);改为while(b<a/2+1);
另外楼主下次贴代码注意用代码格式。工具栏上有。
[解决办法]