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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++编程求满足勾股定理的个数相关的知识,希望对你有一定的参考价值。

输入一个整数 n (0<n<10000000) 表示直角三角形斜边的长度。
要求输出一个整数,表示满足勾股定理的直角三角形个数。

做这个题用了我一小时的时间,一直在考虑循环次数与计算时间的问题,还好算是有结果了

#include <stdio.h>
#include <math.h>
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<c;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\\n", cnt );
    return 0;

参考技术A 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);
参考技术B 我怎么想也是无数个啊。。。没有其他条件吗?

用C++语言编写勾股定理求斜边

输入两直角边,输出斜边

参考技术A #include<iostream.h>
#include<math.h>int main()

float zjb1, zjb2;
cout<<"输入两直角边的长度:"<<endl;
cin>>zjb1>>zjb2;
cout<<"直角边长为"<<sqrt(zjb1*zjb1+zjb2*zjb2)<<endl;
return 0;
参考技术B #include<iostream>#include<cmath>using namespace std;int main() int a,b; double c; cout<<"请输入a、b:"<<endl; cin>>a>>b; c=sqrt(a*a+b*b); cout<<"c:"<<c;return 0

以上是关于C++编程求满足勾股定理的个数的主要内容,如果未能解决你的问题,请参考以下文章

求编程大神:怎么设计c++程序使在键盘上输入任意一个字符串,输出该字符串,并统计输入的字符个数

打卡 c语言趣味编程 求勾股数

c++编程题目,求1到N之间数字1出现的个数。程序不用写,告诉我规律就好,自己写的老是超时

c++核心编程--函数的重载

C++编程!已知矩形,判断输入的点是不是包含在该矩形内。

C++编程,从键盘输入两个数组,求两个数组的交集并输出。