题目1050:完数
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:8778
解决:3612
-
题目描述:
-
求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子相加和的数。
-
输入:
-
测试数据有多组,输入n,n数据范围不大。
-
输出:
-
对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。
-
样例输入:
-
6
-
样例输出:
-
6
1 #include <iostream> 2 #include <cstdio> 3 #include <vector> 4 #include <cmath> 5 using namespace std; 6 7 int main(){ 8 int n, sum, i, j, k; 9 vector<int> v; 10 while(cin >> n){ 11 v.clear(); 12 for(i = 2; i <= n; i++){ 13 sum = 1; 14 for(j = 2; j <= sqrt(i); j++){ 15 if(i % j == 0){ 16 if(j * j == i) 17 sum += j; 18 else 19 sum += (j + i / j); 20 } 21 } 22 if(sum == i) 23 v.push_back(i); 24 } 25 cout << v[0]; 26 for(k = 1; k < v.size(); k++) 27 cout << " " << v[k]; 28 cout << endl; 29 } 30 return 0; 31 }