输入描述:数据数据中包含有一些整数n(1<n<10000)。
输出描述:对于每个整数n,输出的所有不大于n的完数。每个整数n的输出由n引导,跟上冒号,然后是空格开道的一个个完数。
输入样例:
100
5000
输出样例:
100: 6 28
5000: 6 28 496
#include <iostream>
#include <stdlib.h>#include <vector>
#include <math.h>
using namespace std;
bool isPrime(int n)
{
int sqr= sqrt(n*1.0);
for(int i =2; i <= sqr; i++)
{
if(n%i==0)
{
return false;
}
}
return true;
}
int main()
{
vector<int> a;
for(int i = 2; i < 10000 ; i++)
{
if(isPrime(i))
{
int perfect_number =( (int)pow(2,i) - 1)*pow(2, i-1);
a.push_back(perfect_number);
}
}
int n;
while(cin>>n)
{
cout << n;
for(int i = 0; a[i] <= n; i++)
{
cout << " " << a[i];
}
cout << endl;
}
system("PAUSE");
return 0;
}
371

被折叠的 条评论
为什么被折叠?



