*思路(此方法只限定于整型的范围内):
首先,应该知道什么是完数?? 完数:即完全数,又称完美数或完备数,是一些特殊的自然数。
它所有的真因子之和刚好等于它本身。所以,如果一个数恰好等于它所有的真因子之和,则称该数为“完全数”。
接下来,就按照这个想法,建立一个容器,循环遍历1-1000之间的每一个数,找出一个数的真因子,
存入容器,同时判断因子之和是否等于这个数;
若等于,则从容器中打印出此数和它的因子;
若不等于,则把容器中清零,判断下一个数。
*/
int main()
{
vector<int> 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;
}