三位阶乘和数题,哪位神仙能帮我看看哪儿错了

描述
假设有这样一个三位数x,其百位、十位和个位数字分别是a、b、c,如果x= a!+b!+c!,则这个三位数就称为三位阶乘和数(约定0!=1)。请编程计算m,n(m,n为三位数,m<n)之间所有的三位阶乘和数。
函数原型: long Fact(int n);
函数功能:计算n的阶乘
输入
输入两个三位数m,n
输出
m和n之间所有的三位阶乘和数,每输出一个换行。
难度
一般
输入示例
100 200
输出示例
145
#include <stdio.h>
#include <stdlib.h>
long Fact(int n)
{
long x=1;
for(int i=1; i<=n; i++)
{
x*=i;
}
if(n==0)
x=1;
return x;
}
int main()
{
int m,n,a,b,c,i;
scanf("%d%d",&m,&n);
for(i=m; i<=n; i++)
{
a=i/100;
b=i/10%10;
c=i%10;
m=a100+b10+c;
n=Fact(a)+Fact(b)+Fact(c);
if(m==n)
printf("%d\n",i);
}
return 0;
}

int main() {
    int m,n,a,b,c,i,s=0;
    scanf("%d%d",&m,&n);
    for(i=m; i<=n; i++) {
        a=i/100;
        b=i/10%10;
        c=i%10;
        s=Fact(a)+Fact(b)+Fact(c);
        if(s==i)
            printf("%d\n",i);
    }
    return 0;
}