倒勾股数是满足公式:1/A^2+1/B^2=1/C^2 的一组正整数(A,B,C),例如,(156,65,60)是倒勾股数,因为:1/156^2+1/65^2=1/60^2。假定A>B>C,且要求A,B,C均小于或等于100,求满足倒勾股数公式的A,B,C之和的最大值是多少?
先推算公式,C^2*(A^2+B^2),= (A^2*B^2),程序就是找寻能让公式左右相等的ABC的值,且0<c<b<a<100.
#include <stdio.h>
int main()
{
int a;//定义循环变量。
int b;
int c;
int sum;//ABC之和。
for (a = 100;a > 0;a--)//以A为循环变量,在1到100之间。
{
for (b = a-1;b > 0;b--)//以B为循环变量,在1到A之间。
{
for (c = b-1;c > 0;c--)//以C为循环变量,在1到B之间。
{
//判断公式左右两侧是不是相等,相等侧符合题目要求
if (c*c*(a*a+b*b) == a*a*b*b)
{
sum = a+b+c; //判定成立,求和
printf("SUM = %d\nA = %d\nB = %d\nC = %d\n",sum,a,b,c);
return 0;
}
}
}
}
return 0;
}输出结果为: