求满足条件 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);
}