#include<stdio.h>
int main()
{
int i,j,m,sum;
for(i=1;i<1000;i++)
{
sum=0;
for(j=1;j<i;j++)
{
if(i%j==0)
{
sum+=j;
}
}
if(sum==i)
{
printf("%d=",i);
for(m=1;m<i;m++)
{
if(i%m==0)
{
printf("%d+",m);}
}
printf("\n"); }
}
}
int i, j, m, sum;
for (i = 1; i < 1000; i++)
{
sum = 0;
for (j = 1; j < i; j++)
{
if (i % j == 0)
{
sum += j;
}
}
if (sum == i)
{
printf("%d=", i);
bool have = false;
for (m = 1; m < i; m++)
{
if (i % m == 0)
{
if(!have)
have = true;
else
printf("+", m);
printf("%d", m);
}
}
printf("\n");
}
}
加个标志位判断下就好
写一个数组存放结果,也就是printf("%d+",m)这句变成将m存到数组里面去,然后遍历数组输出,
加个判断,如果输出的是数组的最后一个,那就不要输出printf("%d+",x);,而是printf("%d",x);