问题及代码:
/*
*Copyright (c)2014,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:number.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,k,sum;
for(i=2; i<=1000; i++) //1不算入一个完数。
{
sum=1; //1是任何数的一个因数。
for(k=2;k<=i/2;k++) //k<=i/2是要保证i%k能进行计算。
if(i%k==0)
sum+=k;
if(sum==i)
cout<<"1000以内的完数有:"<<sum<<endl;
}
return 0;
}
运行结果:
知识点总结:
要运用for语句嵌套。if单语句判断。
学习心得:
要特别注意括号内的要给定的条件,被那个k<=i/2玩坏了。。纠结了好久才想出来为什么出错。还是自己思维不够缜密,光想着大条件,没想清楚怎么才能满足计算的条件。