您的位置:首页 > 其它

九度 题目1050:完数

2014-07-25 14:54 190 查看
题目来源:http://ac.jobdu.com/problem.php?pid=1050

时间限制:1 秒

内存限制:32 兆

特殊判题:否

提交:6091

解决:2518

题目描述:

求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子相加和的数。

输入:

测试数据有多组,输入n,n数据范围不大。

输出:

对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。

样例输入:
6


样例输出:
6


来源:2010年哈尔滨工业大学计算机研究生机试真题

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

int arr[1010];
bool Find_PerfectNum(int n)
{
if(n == 1)
return false;
int i, a = 1;
for(i = 2; i <= (n>>1); ++i)
{
if(n%i == 0)
a += i;
}
if(n == a)
return true;
return false;
}

int main()
{
int n, i;
while(~scanf("%d", &n))
{
int j = 0;
for(i = 2; i <= n; ++i)
{
if(Find_PerfectNum(i))
arr[j++] = i;
}
for(i = 0; i < j-1; ++i)
printf("%d ", arr[i]);
printf("%d\n", arr[j-1]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: