求满足条件 abcd=(ab)2 +(cd)2 的所有四位数。例如,a=8,b=8,c=3,d=3为满足条件的四位数,即8833=(88)2+(33)2。

求满足条件 abcd=(ab)2 +(cd)2 的所有四位数。例如,a=8,b=8,c=3,d=3为满足条件的四位数,即8833=(88)2+(33)2。

遍历就是啦,a*1000+b*100+c*10+d == (a*10+b)^2 + (c*10+d)^2。
代码如下:
方法一:

#include <stdio.h>
int main()
{
    int r1,r2,r3;
    
    for (r1=1000;r1<=9999;r1++)
    {
        r2 = r1/100;
        r3 = r1%100;
        if(r1 == r2*r2 + r3*r3)
            printf("%d ",r1);
    }

    return 0;
}

方法二:

#include <stdio.h>
int main()
{
    int a,b,c,d;
    int r1,r2,r3;
    for (a=1;a<=9;a++)
    {
        for (b=0;b<=9;b++)
        {
            for (c=0;c<=9;c++)
            {
                for (d=0;d<=9;d++)
                {
                    r1 = a*1000+b*100+c*10+d;
                    r2 = a*10+b;
                    r3 = c*10+d;
                    if(r1 == r2*r2+r3*r3)
                        printf("%d ",r1);
                }
            }
        }
    }
    return 0;
}

遍历四位数,求余100为cd,除以100为ab,求平方和是否等于四位数

#include <stdio.h>
int main()
{
    for(int i=1000;i<10000;i++)
    {
        if((i%100)*(i%100) + (i/100)*(i/100) == i)
          printf("%d\n",i);
    }
    return 0;
}

for(int i=10;i<=99;i++)
   for(int j=10;j<=99;j++)
   {  
       if(i*i+j*j==i*100+j)

          printf("%d\n",i*100+j);
  }