求助:关于完数的问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 02:07:48
#include <iostream>
using namespace std;

int main()
{
int m,i,s,n;
int k[10];
for(m=2;m<=1000;m+=2)
{
s=0;
n=0;
for(i=1;i<m;i++)
{
if(m%i==0)
{
s=s+i;
k[n]=i;
n++;
}
}
if(m==s)
{
cout<<s<<" "<<"its factors are: ";
for(i=0;i<n;i++)
{
cout<<k[i]<<" ";
}
cout<<endl;
}
}
return 0;
}
运行结果: 6 its factors are: 1 2 3
28 its factors are: 1 2 4 7 14

正确结果: 6 its factors are: 1 2 3
28 its factors are: 1 2 4 7 14
496 its factors are: 1 2 4 8 16 31 62 124 248
不知道错在那里,请大家帮我指出下,并给出错误原因!
不要去网上找那些代码给我看,我不需要.
我需要的是有人帮我指出我这代码中的错误之处,并指明原因.
请理解我的意思

#include <iostream>
using namespace std;

int main()
{
int m,i,s,n;
//数组不够大,跑至一半被强制终止,非法存取记忆体
int k[1000];

for(m=2;m<=1000;m+=2)
{
s=0;
n=0;
for(i=1;i<m;i++)
{
if(m%i==0)
{
s=s+i;
k[n]=i;
n++;
}
}

if(m==s)
{
cout<<s<<" "<<"its factors are: ";
for(i=0;i<n;i++)
{
cout<<k[i]<<" ";
}
cout<<endl;
}
}
return 0;
}

呵呵,我自己写的,被人说成是网上抄的

有本事你也自己做出正确的来,来这儿问个什么劲儿

慢慢等吧