寻找[m,n]区间内的所有勾股弦数并输出,其中,100<m<10000,100<n<10000,m<n。勾股弦数指一个数前两位数字的平方和等于后一位或两位数字组成的数的平方,并且这3个数都不能为0。例如101和1001不是勾股弦数,345是勾股弦数33+44=55,6810是勾股弦数66+88=1010。
① 写函数int f(int n),判断n是否为勾股弦数,若是返回1,不是返回0。
② 编写main函数,接收键盘输入的m和n的值,判断是否符合m和n的条件,不符合继续输入,符合则使用循环遍历区间内的每个数,调用函数f判断每个数是否为勾股弦数,若是则输出。
#include <stdio.h>
int f(int n)
{
int q,w,e;
if(n>999){
q=n/1000;
w=n%1000/100;
e=n%100;
}
else
{
q=n/100;
w=n/10%10;
e=n%10;
}
if(q*q+w*w==e*e)
return 1;
else
return 0;
}
int main()
{
int m, i,n;
int a,s,d;
while(m>=10000 || m<=100|| n<=100 || n>=10000|| m>n)
{
scanf("%d%d",&m,&n);
}
for(i=m;i<=n;i++){
if(i<1000)
{
a=i%10;
s=i%100/10;
d=i/100;
if((a*s*d)!=0)
if(f(i))
printf("%d:%d*%d+%d*%d=%d*%d\n",i,d,d,s,s,a,a);
}
if(i>999){
a=i/100%10;
d=i/1000;
if((a*d)!=0)
if(f(i))
printf("%d:%d*%d+%d*%d=%d*%d\n",i,i/1000,i/1000,i/100%10,i/100%10,i%100,i%100);
}
}
}