题目 解决代码及点评 完数的解决方案依旧是遍历,然后写出判断完数的函数进行处理 /************************************************************************/ /* 16. 一个数如果恰好等于它的因子之和
题目
解决代码及点评
完数的解决方案依旧是遍历,然后写出判断完数的函数进行处理
/*
16. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如,6 的因子为1、2、3,而6=1+2+3,因此6 是“完数”。编程序找出1000之内的所有完数,
并按下面格式输出其因子:
6 its factors are 1,2,3
*/
/************************************************************************/
// 判断一个数是否完数的函数
bool f416(int num)
{
int arr[100]={0};
int index=0;
int sum=0;
// 查找它的所有因子,再将因子累加
for (int i=1;i<num;i++)
{
if (num%i==0)
{
sum+=i;
arr[index++]=i;
}
}
// 如果因子累加的和是它自己本身,那么这个数是完数
if (sum==num)
{
printf(" %5d its factors are",num);
for (int i=0;i<index;i++)
{
printf("%5d",arr[i]);
}
return true;
}
else
{
return false;
}
}
void main()
{
for (int i=1;i<=1000;i++) // 遍历1000个数
{
if (f416(i)) // 判断是不是完数
{
printf("\n");
}
}
system("pause");
}
代码下载及其运行
代码下载链接:
解压密码为c.itcast.cn
下载解压后用VS2013打开工程文件
点击 “本地Windows调试器” 执行