实现这个题目的内容要求不难,但是这个格式倒是把我挡了好一会,所幸还是搞出来了,代码如下
#include <stdio.h>
int magic1(int number);
void magic2(int m,int n);//先声明这俩函数
int main()
{
int m,n;
scanf("%d %d",&m,&n);
magic2(m,n);
return 0;
}
int magic1(int number)
{
int i = 1,j = 0,sum = 0;
int arr[100] = {0};
while(i < number || (i == number && number == 1))
{
if(number % i == 0)
{
arr[j] = i;
sum += arr[j];
j++;
}
i++;
}
return sum;
}
void magic2(int m,int n)
{
int i,j,a,k,sum,flag = 0,count = 0;
for(a = m;a <= n;a++)
{
if(magic1(a)==a)
count++;
}
int arr[100] = {0};
for(int a = m;a <= n;a++)
{
i = 1;
sum = 0;
j = 0;
while(i < a || (a == i && a == 1))
{
if(a % i == 0)
{
arr[j] = i;
sum += arr[j];
j++;
}
i++;
}
if(sum == a)
{
flag = 1;
if(a < 10)//这里是解决格式的hh
printf(" ");
else if(a >= 10 && a < 99)
printf(" ");
else if(a >= 100 && a < 999)
printf(" ");
printf("%d = 1",a);
for(k = 1;k < j;k++)
{
printf("+%d",arr[k]);
}
if(count > 1)
{
printf("\n");
count--;
}
}
}
if(flag == 0)
{
printf("Not Found");
}
}
运行结果如下