一道简单的C++的题目,求写出程序。。。。。

来源:百度知道 编辑:UC知道 时间:2024/06/03 07:26:20
求出1000之内的“完数”。所谓“完数”,即是这个数等于它的因子之和。例如:6是一个完数,即6=1+2+3。

#include <stdio.h>

void main()
{
int k[11];
int i,a,n,s;
for (a=2;a<=1000;a++)
{
n=0;
s=a;
for(i=1;i<a;i++)
{
if ((a%i) == 0)
{
n++;
s=s-i;
k[n]=i; //将找到的因子赋给k[1],...k[10]
}
}
if (s == 0)
{
printf("\n%d 是一个完数,它的因子是:",a);
for(i=1;i<n;i++)
{
printf("%d,",k[i]);
}
printf("%d\n",k[n]);
}

}
}

main()
{
static int k[10]; //设因子最多10个,怕不够用可以设再大些
int i,j,n,s;

for(j=2;j<1000;j++) //找完数
{
n=-1; //k数组下标
s=j; //测试数j,s为临时计算用
for(i=1;i<=sqrt(j);i++) //挨个找因数
{
if((j%i)==0) //j可以整除i吗
{ n++; //下标从0开始计
s=s-i;
k[n]=i; //加入i到k数组中
}
}
if(s==0) //s减完所有因数为0吗?是则j为完数
{
printf(\"%d is a wanshu\