#include <stdio.h>
#include <math.h>
#include <iostream>
#include <algorithm>
using namespace std;
#define maxn 1000
int que[maxn];
int top;
int find(int x)
{
int i,j,k;
top=0;
int sum=1;
que[top++]=1;
for(i=2;i<=sqrt(x);i++)
if(x%i==0)
{
que[top++]=i;
que[top++]=x/i;
if(i!=x/i) sum+=i+x/i;
}
if(sum==x) return 1;
else return 0;
}
int main()
{
int n;
while(1)
{
int flag=0;
scanf("%d",&n);
if(n==-1) break;
if(find(n))
{
sort(que,que+top);
printf("%d = ",n);
for(int i=0;i<top;i++)
{
if(i!=top-1) printf("%d + ",que[i]);
else printf("%d",que[i]);
}
printf("\n");
}
else
printf("%d is NOT perfect.\n",n);
}
return 0;
}
水题。。。找因子
最新推荐文章于 2020-12-03 18:08:31 发布