C++编程求满足勾股定理的个数
答案:3 悬赏:40 手机版
解决时间 2021-02-21 17:55
- 提问者网友:我一贱你就笑
- 2021-02-21 11:15
C++编程求满足勾股定理的个数
最佳答案
- 五星知识达人网友:深街酒徒
- 2021-02-21 12:37
做这个题用了我一小时的时间,一直在考虑循环次数与计算时间的问题,还好算是有结果了
#include
#include
int main()
{
double aa,bb,cc,z;
int a,b,c,cnt=0;
scanf("%d", &c );
cc=c*1.0*c ;//c的平方,用double精度才够,int会溢出
for( a=1;a {
aa=a*1.0*a; //a的平方
bb=cc-aa; //b方
b=(int)(sqrt(bb)+0.005) ; //开方得到b, 加上个精度误差进行取整
z=bb-b*1.0*b ;//检查b*b是不是等于bb. 浮点数比较相等要用减法,因为精度问题
if( z<=0.005 && z>=-0.005 ) //在误差范围内,可视作两数相等
{
c=b;//为了循环次数控制
cnt++;
}
}
printf("%d
", cnt );
return 0;
}
#include
#include
int main()
{
double aa,bb,cc,z;
int a,b,c,cnt=0;
scanf("%d", &c );
cc=c*1.0*c ;//c的平方,用double精度才够,int会溢出
for( a=1;a
aa=a*1.0*a; //a的平方
bb=cc-aa; //b方
b=(int)(sqrt(bb)+0.005) ; //开方得到b, 加上个精度误差进行取整
z=bb-b*1.0*b ;//检查b*b是不是等于bb. 浮点数比较相等要用减法,因为精度问题
if( z<=0.005 && z>=-0.005 ) //在误差范围内,可视作两数相等
{
c=b;//为了循环次数控制
cnt++;
}
}
printf("%d
", cnt );
return 0;
}
全部回答
- 1楼网友:迟山
- 2021-02-21 14:26
我怎么想也是无数个啊。。。没有其他条件吗?
- 2楼网友:杯酒困英雄
- 2021-02-21 14:17
for(i=1;i<=3300;i++)
a[i*i]=1;//记录1到3300所有的完全平方数。
for(i=ceil[n/2];i<=n;i++) //能够形成三角形的变成,挨个找。
{
if(a[n*n-i*i]==1) //如果n-另外一边的平方是完全平方数就可以构成直角三角形
total++; //初始值为0.
}
printf("%d",total);
a[i*i]=1;//记录1到3300所有的完全平方数。
for(i=ceil[n/2];i<=n;i++) //能够形成三角形的变成,挨个找。
{
if(a[n*n-i*i]==1) //如果n-另外一边的平方是完全平方数就可以构成直角三角形
total++; //初始值为0.
}
printf("%d",total);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯