永发信息网

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;
}
全部回答
  • 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);
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯