题目描述:给定一个数n (<=10000)判断从1~n中有多少个数的因子和等于n
如果有的话就输出 个数 以及每个数
否则输出 Forever alone
#include <iostream>
#include <cstring>
#include <set>
using namespace std;
long long a[10001];
void init(){
memset(a,0,sizeof(a));
for(int i=1;i<=10000;i++){
for(int k=1;k*k<=i;k++){
if(i%k==0){
a[i]+=k;
a[i]+=(i/k);
}
}
}
}
int main()
{
int n;
init();
set<int >p;
set<int>::iterator it;
while(cin>>n){
int count=0;
p.clear();
for(int i=1;i<n;i++){
if(a[i]==n){
p.insert(i);
count++;
}
}
if(count){
cout<<count<<endl;
for(it=p.begin();it!=p.end();it++){
if(it==p.begin())
cout<<*it;
else
cout<<" "<<*it;
}
cout<<endl;
}
else
cout<<count<<endl<<"Forever alone"<<endl;
}
return 0;
}