用C++如何编写完全数

如题所述

/*求10000以内的完数*/
#include <stdio.h>
int main()
{
long p[300]; //保存分解的因子
long i,num,count,s,c=0;
for(num=2;num<=2000000;num++)
{
count=0;
s=num;
for(i=1;i<num/2+1;i++) //循环处理每1个数
{
if(num % i==0) //能被i整除*/
{
p[count++]=i; //保存因子,计数器count增加1
s-=i; //减去一个因子*/
}
}
if(s==0) //已被分解完成,则输出*/
{
printf("%4ld是一个完数,因子是",num);
printf("%ld=%ld",num,p[0]); //输出完数 */
for(i=1;i<count;i++) //输出因子 */
printf("+%ld",p[i]);
printf("\n");
c++;
}
}
printf("\n共找到%d个完数。\n",c);
getch();
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-22
还是用遍历的方法吧?从1开始遍历到n。写一个小函数,求一个整数的因数,然后把这些因数相加,是否等于其本身。这个方法也许笨,但是至少能做出来。
期待与你分享更好的方法。
希望采纳,也希望对你有帮助。
相似回答