题目
解决代码及点评
完数的解决方案依旧是遍历,然后写出判断完数的函数进行处理
/************************************************************************/ /* 16. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。 例如,6 的因子为1、2、3,而6=1+2+3,因此6 是“完数”。编程序找出1000之内的所有完数, 并按下面格式输出其因子: 6 its factors are 1,2,3 */ /************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <math.h>
// 判断一个数是否完数的函数 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"); }
代码下载及其运行
代码下载链接:
http://download.csdn.net/detail/yincheng01/6640945
解压密码为c.itcast.cn
下载解压后用VS2013打开工程文件
点击 “本地Windows调试器” 执行
程序运行结果