求1000之内的所有完数。所谓完数是指一个数恰好等于它的所有因子之和。例如,6=1+2+3,所以6为完数。

来源:百度知道 编辑:UC知道 时间:2024/06/03 22:50:10
我的代码如下,但是结果始终只显示1,请大家帮我指正一下
#include <iostream.h>
int main()
{
int a,k,s=0;
for (k=1;k<=1000;k++)
{
int s=0;
for (a=1;a<=k;a++)
{
if (k%a==0)
s=s+a;
}
if (k==s)
cout<<k<<endl;
}
}

虽然我没学过C语言,但是你的程序中第二个for语句应该有问题,a<=k的意思如果是a小于等于k那就显然不对,你应该把它改成a小于k或为了节省运算把它改成a<=sqrt(k),否则每一步验算该数是不是完全数还要加上自身,当然只能显示1啦,其它有没有语句书写问题就不清楚了。

6、28、496