1000 以内勾股数
1. 编程找出1000以内的满足勾股定理
搜索更多相关的解决方案:
勾股数
----------------解决方案--------------------------------------------------------
疯子啊,一大篇啊!
----------------解决方案--------------------------------------------------------
main()
{
int a,b,c,n=0;
for(a=1;a<=1000;a++)
for(b=a;b<=1000;b++)
for(c=1;c<=1000;c++)
if(a*a+b*b==c*c)
{
printf("%3d,%3d,%3d",a,b,c);
n++;
if(n==3)
{
printf("\n");
n=0;
}
}
}
----------------解决方案--------------------------------------------------------
#include <stdio.h>
void main()
{
int a,b,c,n=0;
for(a=1;a<=1000;a++)
for(b=a;b<=1000;b++)
for(c=(a<b?a:b);c<=1000;c++)//这样效率可能会更高点的哦!!!
if(a*a+b*b==c*c)
{
if(n%3==0)
putchar('\n');
printf("%4d%4d%4d,",a,b,c);
n++;
}
}
----------------解决方案--------------------------------------------------------
高见!
----------------解决方案--------------------------------------------------------
四楼的改成这样,不过似乎没什么非常好的算法
[CODE]
#include <stdio.h>
int main()
{
int a,b,c,n=0;
for(a=3;a<1000;a++)
for(b=a+1;b<1000;b++)
for(c=b+1;c<=1000;c++)
if(a*a+b*b==c*c)
{
n++;
printf("%5d%5d%5d,",a,b,c);
if(n%3==0)
putchar('\n');
}
return 0;
}[/CODE]
----------------解决方案--------------------------------------------------------
以下是引用xyelyleh2在2006-5-4 23:08:00的发言:
1 编程找出1000以内的满足勾股定理
题目不赖,几个跟帖都差劲。有个数学公式:
(a*a-b*b)^2+(2*a*b)^2==(a*a+b*b)^2
当然,光靠它找不全。Think it over!
----------------解决方案--------------------------------------------------------
楼上建议没用武之地
没有一个可以找全的公式
----------------解决方案--------------------------------------------------------
用一个公式又找不全,再找漏的更麻烦,何况(3,4,5)
这种乘倍也是可以的(6,8,10)。。。。
但都找不全
----------------解决方案--------------------------------------------------------
/*不开方,也能判完全平方数但愿这个小工具有助于找勾股数*/
#include<stdio.h>
void main()
{ unsigned long x,y0,y1;
scanf("%ld",&x);
y1=x/2;
do
{
y0=y1;
y1=(y0+x/y0)/2;
}
while(y1<y0);
if(y1*y1==x)printf("yes\n");
else printf("no \n");
}
----------------解决方案--------------------------------------------------------