完数

xiaoxiao2021-02-28  120

问题描述:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3,如8的因子和是7(即1+2+4),8不是完数。编程找出1000以内的所有完数。 问题分析:首先从2到1000构造循环控制变量i的外层循环。每次循环中,利用内嵌的循环逐个地求出i的因子,并累加起来(为提高效率,可能考虑因子的对称性,即j为小于sqrt(i)的因子,则一定有i/j也是因子),若累加和与i相等,则i是完全数,输出。然后继续循环,考察i+1……

#include<iostream.h> int main() { int a,i,sum; for(a=2;a<=1000;a++) { sum=0; for(i=1;i<a;i++) { if(a%i==0) sum=sum+i; } if(sum==a) cout<<a<<endl; } }
转载请注明原文地址: https://www.6miu.com/read-42261.html

最新回复(0)