问题及代码:
/*
*Copyright(c)2014,烟台大学计算机学院
*All rights reserved.
*文件名称:test.cpp
*作者:陈文青
*完成日期:2014年11月3日
*版本号:v1.0
*
*问题描述:一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如6=1+2+3,再如8的因子和是7(即1+2+4),8不是完数。
编程找出1000以内的所有完数。
*程序输入:
*程序输出:1000以内的所有完数。
*/
#include <iostream>
using namespace std;
int main()
{
int i,n;
cout << "1000以内的所有完数有:" << endl;
for (i=2; i<=1000; i++) //for语句,进行1000内的判断
{
int sum=0;
for(n=1; n<=i/2; n++) //n=i/2,提高效率
{
if(i%n==0) //执行语句
sum=sum+n; //所有因子的合
}
if(sum==i) //若为完数,则输出
cout<<i<<",";
}
return 0;
}
运行结果:
知识点总结:
利用循环语句,if语句,判断是否为完数。
学习心得:
只要掌握整个程序的结构,问题其实很简单。