如果三个正整数A B C ,A2+B2=C2则为勾股数 如果ABC之间两两互质,即A与B A与C B与C均互质没有公约数, 则称其为勾股数元组。 请求出给定n m 范围内所有的勾股数元组 输入描述 起始范围 1<n<10000 ? ?n<m<10000 输出目描述 abc 保证a<b<c输出格式 ?a b c 多组勾股数元组 按照a升序b升序 c升序的排序方式输出。 给定范围内,找不到勾股数元组时,输出 ?Na
案例1 ?输入 ? 1 ? 20 ? 输出 ? ?3 4 5 ? ?5 12 13 ? ?8 15 17
案例2: ? 输入 ? ? 5 ? ? 10 ? 输出 ? ? Na ?
#include<stdio.h>
#include<math.h>
int sign=0;
int checkgcd(int n,int m)
{
if(n==0||m==0)
return 1;
if(n%m==0)
return m;
else
return checkgcd(m,n%m);
}
int getgougushu(int n,int m)
{
int i,j,k;
double temp;
long cz;
for(i=n;i<=m;i++)
{
for(j=i+1;j<=m;j++)
{
k=i*i+j*j;
temp=sqrt(k);
cz=(long)temp;
if(cz-temp!=0)
continue;
k=(int)temp;
if(k<=m&&checkgcd(i,j)==1&&checkgcd(i,k)==1&&checkgcd(j,k)==1)
{
printf("%d %d %d\n",i,j,k);
sign=1;
}
}
}
return 0;
}
int main()
{
int m,n;
scanf("%d %d",&n,&m);
getgougushu(n,m);
if(sign==0)
printf("NA\n");
return 0;
}
|