在10000以内求出满足以下要求的数。
注:这个题目是很早之前写的,可能有点乱
#include <stdio.h>
#include <math.h>
#include <string.h>
void main()
{
int max=0;
int i;
int a[4]; //a[0]-a[3]分别保存个位、十位、百位、千位的数字
for (i=0;i<4;i++)
a[i]=0; //数字a元素初始化为0
int n;
for (n=101;n<10000;n++)
{
int sum=0;
int m=0;
int tmp=n;
i=0;
while (tmp)
{
a[i]=tmp%10;
tmp=tmp/10;
i++;
}
sum=a[0]*a[1]+a[0]*a[2]+a[0]*a[3]+a[1]*a[2]+a[1]*a[3]+a[2]*a[3]; //sum保存个十百千位上的数两两相乘再相加的和
if (sum!=0 && n%sum==0) //判断sum!=0且n能否被sum整除
{
m=a[0]*1000+a[1]*100+a[2]*10+a[3];//原数反转为新数
printf("%d,",n);//可以输出满足条件的新数或原数以便查看
}
if (m>max)
max=m;//max用于存储最大的新数
}
i=0;
int mx=max;
while (mx)
{
a[i]=mx%10;
mx=mx/10;
i++;
}
n=a[0]*1000+a[1]*100+a[2]*10+a[3];//由最大的新数max求其原数,也就是将新数翻转为原数
printf("\n");
printf("n=%d;max=%d\n",n,max);
}