
用C++求130<A+B+C<150且A>B>C的倒勾股数有多少组
//A,B,C是三个小于或等于100正整数,当满足1/A^2+1/B^2=1/C^2关系时,称为//倒勾股数。求130<A+B+C<150且A>B>C的倒勾股数有多少组#...
//A,B,C是三个小于或等于100正整数,当满足1/A^2+1/B^2=1/C^2关系时,称为
//倒勾股数。求130<A+B+C<150且A>B>C的倒勾股数有多少组
#include<iostream>
using namespace std;
int main()
{
int a,b,c,k=0;
for(a=1;a<=100;a++)
{
for(b=1;b<=100;b++)
{
for(c=1;c<=100;c++)
{
if(130<a+b+c && a+b+c<150 && 1/(a*a)+1/(b*b)==1/(c*c))
k++;
}
}
}
cout<<k<<endl;
return 0;
}
有多少组该怎么写进去,还能能够把每组都显示出来吗? 展开
//倒勾股数。求130<A+B+C<150且A>B>C的倒勾股数有多少组
#include<iostream>
using namespace std;
int main()
{
int a,b,c,k=0;
for(a=1;a<=100;a++)
{
for(b=1;b<=100;b++)
{
for(c=1;c<=100;c++)
{
if(130<a+b+c && a+b+c<150 && 1/(a*a)+1/(b*b)==1/(c*c))
k++;
}
}
}
cout<<k<<endl;
return 0;
}
有多少组该怎么写进去,还能能够把每组都显示出来吗? 展开
展开全部
我看到两点,需要改变一下
一个是1/(a*a)+1/(b*b)==1/(c*c)这个公式
在c中,abc和1都是int型,那么得到的结果也是int型,所以只要abc不是1,那么得到的结果都是0
所以你会打印的k很多,呵呵
再说了,在c中1/(a*a)+1/(b*b)==1/(c*c)这个式子及时变一下1.0/(a*a)+1.0/(b*b)==1.0/(c*c)结果变成float型,但是在计算机的小数比较上,还是误差很大,所以这个式子需要变一下,让他成为都是整数的比较,统分
都同时乘以a*a*b*b*c*c得到的结果是b*b*c*c+a*a*c*c==a*a*b*b,因为abc都不可能为零,所以这个式子可以用
第二个地方就是bc的变换界限,因为A>B>C,你要是想让abc这三个变量对应ABC的话,那么我建议这么写
for(c=1;c<=100;c++)
{
for(b=c+1;b<=100;b++)
{
for(a=b+1;a<=100;a++)
一个是1/(a*a)+1/(b*b)==1/(c*c)这个公式
在c中,abc和1都是int型,那么得到的结果也是int型,所以只要abc不是1,那么得到的结果都是0
所以你会打印的k很多,呵呵
再说了,在c中1/(a*a)+1/(b*b)==1/(c*c)这个式子及时变一下1.0/(a*a)+1.0/(b*b)==1.0/(c*c)结果变成float型,但是在计算机的小数比较上,还是误差很大,所以这个式子需要变一下,让他成为都是整数的比较,统分
都同时乘以a*a*b*b*c*c得到的结果是b*b*c*c+a*a*c*c==a*a*b*b,因为abc都不可能为零,所以这个式子可以用
第二个地方就是bc的变换界限,因为A>B>C,你要是想让abc这三个变量对应ABC的话,那么我建议这么写
for(c=1;c<=100;c++)
{
for(b=c+1;b<=100;b++)
{
for(a=b+1;a<=100;a++)
更多追问追答
追问
#include
using namespace std;
int main()
{
float a,b,c,k=1;
for(c=1;a<=100;a++)
{
for(b=c+1;b<=100;b++)
{
for(a=b+1;c<=100;c++)
{
if(130<a+b+c && a+b+c<150 && 1.0/(a*a)+1.0/(b*b)==1.0/(c*c))
k++;
}
}
}
cout<<"a="<<a<<"b="<<b<<"c="<<c<<endl;
return 0;
}
好像不怎么对啊
追答
跟你说了1.0/(a*a)+1.0/(b*b)==1.0/(c*c)这个比较不太准确
用b*b*c*c+a*a*c*c==a*a*b*b这个
展开全部
#include<iostream>
using namespace std;
int main()
{
double a,b,c,k=0;
for(c=1;c<=100;c++)
{
for(b=c;b<=100;b++)
{
for(a=b;a<=100;a++)
{
if(130<a+b+c && a+b+c<150 && 1/(a*a)+1/(b*b)==1/(c*c))
{
k++;
cout<<a<<" "<<b<<" "<<c<<endl;
}
}
}
}
cout<<k<<endl;
return 0;
}
经测试符合你的要求,望采纳!谢谢!有问题可以追问!
using namespace std;
int main()
{
double a,b,c,k=0;
for(c=1;c<=100;c++)
{
for(b=c;b<=100;b++)
{
for(a=b;a<=100;a++)
{
if(130<a+b+c && a+b+c<150 && 1/(a*a)+1/(b*b)==1/(c*c))
{
k++;
cout<<a<<" "<<b<<" "<<c<<endl;
}
}
}
}
cout<<k<<endl;
return 0;
}
经测试符合你的要求,望采纳!谢谢!有问题可以追问!
追问
输出为0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把K++;改为cout<<"A="<<a<<" B="<<b<<" C="<<c<<" "<<++k<<endl;
追问
死循坏了;
追答
已经测试
#include
using namespace std;
int main()
{
float a,b,c;
int k=0;
for(a=1.0;a<=100;a++)
{
for(b=1.0;b<a;b++)
{
for(c=1.0;c<b;c++)
{
if(130<a+b+c && a+b+c<150 && 1/(a*a)+1/(b*b)==1/(c*c))
cout<<"A="<<a<<" B="<<b<<" C="<<c<<" "<<++k<<endl;
}
}
}
cout<<k<<endl;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询