判断一个数是否为完数

来源:百度知道 编辑:UC知道 时间:2024/06/30 05:24:18
输出1-1000之间所有的完全数。所谓完全数,就是指一个整数除自身之外所有因数的和等于这个数。例如6 = 1+2+3,所以6就是一个完全数。现在需要你编写一个程序,输出1-1000(不包括数字1)之间的所有完全数。
在下面的程序中空白处填写:
#include<stdio.h>

/*函数原型,判断一个数是否为完全数,是返回1,否返回0。number是要判断的数*/
int perfect(int number);
int main()
{
int i;
int flag = 0;
for (i = 2; i <= 1000; ++i)
{
if (perfect(i))
{
printf("%10d", i);
++flag;
if (flag == 5)
{
flag = 0;
printf("\n");
}
}

}
if(flag != 0)
{
printf("\n");
}
return 0;
}

/*函数实现,判断一个数是否为完全数,是返回1,否返回0。number是要判断的数*/
int perfect(int number)
{

}

写个比较笨的方法:
int perfect(int number)
{
int i, sum = 0;
for(i = 1; i < number; i++)
{
if(number%i == 0)
{
sum = sum + i;
}
if(sum > number)
{
return 0;
}
}
if(sum == number)
{
return 1;
}
return 0;
}

#include<stdio.h>

/*函数原型,判断一个数是否为完全数,是返回1,否返回0。number是要判断的数*/
int perfect(int number);
int main()
{
int i;
int flag = 0;
for (i = 2; i <= 1000; ++i)
{
if (perfect(i))
{
printf("%10d", i);
++flag;
if (flag == 5)
{
flag = 0;
printf("\n");
}
}

}
if(flag != 0)
{
printf("\n");
}
return 0;
}

/*函数实现,判断一个数是否为完全数,是返回1,否返回0。number是要判断的数*/
int perfect(int number)
{
int i, sum = 0;
for(i = 1; i < number; i++)
{
if(number%i == 0)
{