一道C语言编程问题,高手们来看看帮忙解答下
倒勾股数是满足公式:1/A^2+1/B^2=1/C^2的一组正整数(A,B,C),例如,(156,65,60)是倒勾股数,因为:1/156^2+1/65^2=1/60^2...
倒勾股数是满足公式: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之和的最大值是多少?
展开
4个回答
展开全部
先推算公式,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;
}输出结果为:
展开全部
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,ans=0;
double c;
for (a=100;a>2;--a)
for (b=a-1;b>1;--b)
{
c=sqrt(1.0/(1.0/(a*a)+1.0/(b*b)));
if (c==(int)c) {if (a+b+(int)c>ans) ans=a+b+(int)c;}
}
printf("%d\n",ans);
while (1);
return 0;
}
改了无数次啊。。终于对了。。鄙视一下那个叫“李离萍”的,抄袭我的!可耻!不过是错的~
#include<math.h>
int main()
{
int a,b,ans=0;
double c;
for (a=100;a>2;--a)
for (b=a-1;b>1;--b)
{
c=sqrt(1.0/(1.0/(a*a)+1.0/(b*b)));
if (c==(int)c) {if (a+b+(int)c>ans) ans=a+b+(int)c;}
}
printf("%d\n",ans);
while (1);
return 0;
}
改了无数次啊。。终于对了。。鄙视一下那个叫“李离萍”的,抄袭我的!可耻!不过是错的~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
int main()
{
long a = 100,b = 99, c = 98;
for (a = 100;a>2;a--)
{
for (b = a-1; b>1;b--)
{
for (c = b-1;c>0;c--)
{
if((a*a+b*b) == (b*b*c*c+a*a*c*c))
{
printf("Result is %d\n",a+b+c);
return 0;
}
}
}
}
printf("There aren't three numbers like those!\n");
return 0;
}
int main()
{
long a = 100,b = 99, c = 98;
for (a = 100;a>2;a--)
{
for (b = a-1; b>1;b--)
{
for (c = b-1;c>0;c--)
{
if((a*a+b*b) == (b*b*c*c+a*a*c*c))
{
printf("Result is %d\n",a+b+c);
return 0;
}
}
}
}
printf("There aren't three numbers like those!\n");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<math.h>
int main()
{
int a,b;
floult c;
for (a=100;a>2;--a)
for (b=a-1;b>1;--b)
{
c=sqrt(1.0/(1.0/(a*a)+1.0/(b*b)));
if (c==(int)c) {printf("%d %d %d\n",a,b,(int)c);while(1);}
}
}
int main()
{
int a,b;
floult c;
for (a=100;a>2;--a)
for (b=a-1;b>1;--b)
{
c=sqrt(1.0/(1.0/(a*a)+1.0/(b*b)));
if (c==(int)c) {printf("%d %d %d\n",a,b,(int)c);while(1);}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询