勾股数问题
定义:如果直角三角形三条边长均为整数,这三个整数组成的数组就称为勾股数组,对于勾股数组(a,b,c),根据定理有关系式:a2 + b2=c2。问题:有一种勾股数组(a,b,c),使得b=a+1。例如:32+42=52。
用程序找出指定范围(1<c<N)内所有的这种数组,注意选择最优算法。
#include "stdio.h"
#include"math.h"
void main()
{long a,b,c,n;
double d;
printf("请输入取数范围1~N:");
scanf("%ld",&n);
for(a=1;a<n;a++)
{b=a+1;
d=sqrt(a*a+b*b);
c=sqrt(a*a+b*b);
if(c>n) return;
else if(d==c)
printf("%ld %ld %ld\n",a,b,c);
}
}
为什么我这个程序运行时,取个100000就不能得到正确的结果?谁能指点下,本菜鸟非常感激。我用的VC编译器。
还有我的算法不行,谁能给个更好的算法。多谢了!