题目描述:
一个数如果恰好等于它的因子之和,就被成为完数。 例如6的因子为1,2,3,而6=1+2+3,所以6是一个完数。 编程找出1-1000之间的所有完数,并按照从小到大的顺序输出,输出的每个数都必须以回车结尾。
参考代码:
#include#include void Perfect(int n) { int i,j; for(i=2;i 讲解:
之前做过类似的题目,直接把代码拿过来用了。(记得之前是求10000以内的完数)
循环从2到1000,提取当前数的因子求和,并判断完数。
在求因子的过程中,不需要从1找到i-1,只需从1找到根号 i ,原理很简单,若b能a整除,则b也能被b/a整除。值得注意的是,因子不包括该数本身。
求实求真,大气大为。



