求1-1000之间的完数有哪些????

通行证任务

*思路(此方法只限定于整型的范围内):

首先,应该知道什么是完数?? 完数:即完全数,又称完美数或完备数,是一些特殊的自然数。

它所有的真因子之和刚好等于它本身。所以,如果一个数恰好等于它所有的真因子之和,则称该数为“完全数”。

接下来,就按照这个想法,建立一个容器,循环遍历1-1000之间的每一个数,找出一个数的真因子,

存入容器,同时判断因子之和是否等于这个数;

若等于,则从容器中打印出此数和它的因子;

若不等于,则把容器中清零,判断下一个数。

*/

int main()

{

vector vec;

for (int num = 2; num <= 1000; ++num)

{

for (int i = 1; i < num; ++i)

{

if (num %i == 0)

{

vec.push_back(i);

}

}

int sum = 0;

for (int i = 0; i < vec.size(); ++i)

{

sum += vec[i];

}

if (sum == num)

{

cout << num << "是完数:";

for (int i = 0; i < vec.size(); ++i)

{

if (i == vec.size() - 1)

{

cout << vec[i] << endl;

break;

}

cout << vec[i] << " ,";

}

}

vec.clear();

}

return 0;

}

AdsPower 更新支持 Chrome 136 内核|一文了解浏览器内核的作用与选择建议
七日杀怎么升级木架