Time Limit: 1 secs, Memory Limit: 256 MB
Description
因子和等于它本身的数即为完数,如完数28=1+2+4+7+14。编写程序,输出给定范围内的所有完数。
Input
输入为N(N为大2的自然数)。
Output
输出为2~N之间的所有完数(每一个完数后以换行结束)。
Sample Input
1000
Sample Output
6
28
496
Problem Source
程序设计实验期末考试
^_^ JUST DO IT !
#include <iostream>
#include <cmath>
using namespace std;
int getSumOfDivisions(int num)
{
int Temp = 0;
for (int i = 2; i < sqrt(num); i++)
if (num % i == 0)
Temp += (i + num / i);
if (sqrt(num) * sqrt(num) == num)
Temp += sqrt(num);
return ++Temp;
}
int main()
{
int N;
cin >> N;
for (int i = 2; i <= N; i++)
if (getSumOfDivisions(i) == i)
cout << i << endl;
return 0;
}