题解 | 完数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")
王道机试指南 文章被收录于专栏
这个专栏是参考王道机试指南中相关的练习题哦