题解 | 完数VS盈数
完数VS盈数
https://www.nowcoder.com/practice/ccc3d1e78014486fb7eed3c50e05c99d
#include <stdio.h>
#include <iostream>
#include <vector>
//典型的线性数据结构:
//思路:将范围内的完数和盈数放进两个动态数组里,然后输出
//如何获取完数和盈数:提取每个数的因子,并将因子全部加和,判断和与数的大小,
//得到一个数就把他放到相应的动态数组里
int FactorSum(int i) {
int j, res=0;
for (j = 1; j < i; ++j) {
if (i % j == 0) { //j是i(除了i本身外的)的因子
res += j;
}
}
return res;
}
using namespace std;
int main() {
vector<int> Evec;
vector<int> Gvec;
int n;
for (n = 2; n <= 60; ++n) {
if (n == FactorSum(n)) {
Evec.push_back(n);
} else if (n < FactorSum(n)) {
Gvec.push_back(n);
}
}
printf("E:");
vector<int>::iterator it;
for (it = Evec.begin(); it != Evec.end(); ++it) {
printf(" %d", *it);
}
printf("\n");
printf("G:");
for (it = Gvec.begin(); it != Gvec.end(); ++it) {
printf(" %d", *it);
}
printf("\n");
return 0;
}
// 64 位输出请用 printf("%lld")
王道机试指南 文章被收录于专栏
这个专栏是参考王道机试指南中相关的练习题哦
查看8道真题和解析

