#include<stdio.h>
int f(int n)
{
int a,b,c,d;
if(0<=n&&n<=9)
return 0;
else if(10<=n&&n<=99)
{
a=n/10;
b=n%10;
if(a*b==n)
return 1;
else
return 0;
}
else if(100<=n&&n<=999)
{
a=n/100;
b=(n/10)%10;
c=(n%100)%10;
if(a*(10*b+c)==n||a*(10*c+b)==n||b*(10*a+c)==n||b*(10*c+a)==n||c*(10*b+a)==n||c*(10*a+b)==n)
return 1;
else
return 0;
}
else if(1000<=n&&n<=9999)
{
a=n/1000;
b=(n/100)%10;
c=((n/10)%100)%10;
d=((n%1000)%100)%10;
if(a*(100*b+10*c+d)==n||a*(100*b+10*d+c)==n||a*(100*c+10*b+d)==n||a*(100*c+10*d+b)==n||a*(100*d+10*b+c)==n||a*(100*d+10*c+b)==n||
b*(100*a+10*c+d)==n||b*(100*a+10*d+c)==n||b*(100*c+10*a+d)==n||b*(100*c+10*d+a)==n||b*(100*d+10*a+c)==n||b*(100*d+10*c+a)==n||
c*(100*b+10*a+d)==n||c*(100*b+10*d+a)==n||c*(100*a+10*b+d)==n||c*(100*a+10*d+b)==n||c*(100*d+10*b+a)==n||c*(100*d+10*a+b)==n||
d*(100*b+10*c+a)==n||d*(100*b+10*a+c)==n||d*(100*c+10*b+a)==n||d*(100*c+10*a+b)==n||d*(100*a+10*b+c)==n||d*(100*a+10*c+b)==n)
return 1;
else
return 0;
}
}
void main()
{
int m;
for(int i = 0; i<10000; i++)
{
m=f(i);
if(m==1)
printf("%d\t",i);
else
continue;
}
}
只写到10000以内,我是新手,算法不怎么好,比较繁琐。