作业帮 > 综合 > 作业

C++编程求满足勾股定理的个数

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/08/29 18:12:32
C++编程求满足勾股定理的个数
输入一个整数 n (0
做这个题用了我一小时的时间,一直在考虑循环次数与计算时间的问题,还好算是有结果了#include <stdio.h>
#include <math.h>
int main()
{
\x09double aa,bb,cc,z;
    int a,b,c,cnt=0;
    
    scanf("%d", &c );
    cc=c*1.0*c ;//c的平方,用double精度才够,int会溢出
\x09
\x09for( a=1;a<c;a++ )
\x09{
\x09\x09aa=a*1.0*a; //a的平方
\x09\x09bb=cc-aa; //b方
        b=(int)(sqrt(bb)+0.005) ; //开方得到b, 加上个精度误差进行取整
\x09\x09z=bb-b*1.0*b ;//检查b*b是不是等于bb.  浮点数比较相等要用减法,因为精度问题
\x09\x09
\x09\x09if( z<=0.005 && z>=-0.005 ) //在误差范围内,可视作两数相等
\x09\x09{
\x09\x09\x09c=b;//为了循环次数控制
\x09\x09\x09cnt++;
\x09\x09}
\x09}
    printf("%d\n", cnt );
    return 0;
}