根据题目对完数的定义解释,大概了解了本题就是对因子的一些处理;
先上代码过过瘾
#include<iostream>
using namespace std;
int main() {
int n = 0;
for (int i = 1; i <= 1000; i++) {
int s = 0;
for (int j = 1; j <= i / 2; j++)//这边减少了程序的运算量
if (i % j == 0)
s += j;
if (s == i) {
cout << i << '\t';
n++;
if (n % 4 == 0)//每输出四次换行一次
cout << endl;
}
}
system("pause");
return 0;
}
注意哦,因子不包括数的本身,相加的时候不可以带上,我是做了优化的,既减少了运算量,也避免了这种情况;
运行结果:
如果对循环结构熟悉一点其实还是很好理解的,有问题评论区见;