完全数又称为完美数,因为它有如下特别的性质:例如6,它有约数1, 2, 3(不算它自身在内),这三个约数的和刚好也是它本身。现在就要你找出这些数
输入
多组测试数据,一组里只有一行,就是一个n(1<=n<=5e18)
输出
1到n的所有完全数,一个数占一行
样例输入:
30
样例输出:
6
28
代码实现如下:
Code
1 #include<iostream>
2 using namespace std;
3
4 int main(void)
5 {
6 int n,Sum;
7 while(cin >> n)
8 {
9 for(int i = 2;i <= n;i ++)
10 {
11 Sum = 1;
12 for(int j=2;j < i/2+1;j ++)
13 {
14 if(i%j == 0)
15 {
16 Sum += j;
17 }
18 }
19 if(Sum == i)
20 {
21 cout << i << endl;
22 }
23 }
24 }
25 return 0;
26 }
点评:这是一个一般实现的思路。有更好的算法,以后再研究吧。