#include<iostream>
#include<cmath>
using namespace std;
//输入a的值求以a为边的直角三角形有多少组,b要大于a,c是斜边
//A=a*a=c*c-b*b推出A=x*y x=c+b y=c-b
int main()
{
__int64 a;
while(cin>>a&&a)
{
__int64 A=a*a;
int ans=0;
//对x循环查找
for(__int64 x=1;x<a;x++)//x=b+c
{ // A=x*y
if(A%x==0)
{
__int64 y=A/x; // 求y的值
//x+y==2*c c是整数 所以(x+y)%2==0
//x-y==x*b b是整数 所以 (x-y)%2==0
//如果 (x+y)%2==0 那么(x-y)%2==0一定成立 所以判断一个就行
if((x+y)%2==0&&(abs(x-y)/2>a))// abs(x-y)/2>a 是判断 b>a 的
ans++;
}
}
cout<<ans<<endl;
}
}
输入a的值求以a为边的直角三角形有多少组,b要大于a,c是斜边 三个数都是整数
最新推荐文章于 2022-04-17 15:57:21 发布