输出两个数之间的完数(6=1+2+3),判断方法感觉错了,不知道错在那

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
我想要达到的结果
#include
int main()
{ int n,a,b,i,j,k,t,count;
  scanf("%d",&n);
  while(n--)
   { scanf("%d%d",&a,&b);
     if(a>b)
      { t=a;a=b;b=t;
      }
      for(i=a;i<=b;i++)
       { count=0;
         for(j=1;j<=b;j++)
         { for(k=2;k<=b;k++)
            {
            if(i==j+k&&i%j==0&&i%k==0)
             count++;
            else printf("0");}printf("%d",count);
         }
       }
   }
   
    return 0;
}

为什么是三重for循环,你里面两重在干什么,你要是能说清楚你就这样干,不要写自己看不懂的代码