大佬们看看这个我写的有什么问题吗

【程序设计】变异水仙花数 - Daffy Number 

--------------------------------------------------

Is it the number of daffy

功能:

函数 isDaffyNum 的功能:判断某整数(小于100000)是否变异水仙花数 - Daffy Number 

Daffy Number:把任意的数字,从中间拆分成两个数字,

如果所有拆分后的乘积之和等于自身,则是一个Daffy Number。

 

例如:

1461 可以拆分成(1和461),(14和61),(146和1),

655 可以拆分成(6和55),(65和5)

 

655 = 6 * 55 + 65 * 5

1461 = 1*461 + 14*61 + 146*1


 

注意:请勿改动主函数main和其他函数中的任何内容,

仅在函数的花括号中Begin 与 End间填入你编写的若干语句。

 

测试样例TestCase:

 

1000

655

 

2000

655 1461 1642

#include <stdio.h>
int isDaffyNum(int i){
  /********** Begin **********/

int y,sum;
sum=0;
if (i<10)
y=1;
else if (10<=i<100)
y=2;
else if (100<=i<1000)
y=3;
else if (1000<=i<10000)
y=4;
else if (10000<=i<100000)
y=5;
switch (y)
{
    case 1: sum=0;break;
    case 2: sum=(i/10)*(i%10);break;
    case 3: sum=(i/100)*(i%100)+(i/10)*(i%10);break;
    case 4: sum=(i/1000)*(i%1000)+(i/100)*(i%100)+(i/10)*(i%10);break;
    case 5: sum=(i/10000)*(i%10000)+(i/1000)*(i%1000)+(i/100)*(i%100)+(i/10)*(i%10);break;
 } 
 if (sum==i)
 return 1;
 else
 return 0;


  /********** End *********/
}

int main()
{
 
    int x, i;

    scanf("%d",&x);
    
     for(i=1;i<=x;i++){

      if(isDaffyNum(i))
        printf("%d ",i);
     }
     
      printf("\n");

    return 0;
}

显然不对啊...给的数据可能超过10000,这种题正确写法应该是循环取模