当前位置: 代码迷 >> C语言 >> [求助]求50以内勾股数组(已经解决)
  详细解决方案

[求助]求50以内勾股数组(已经解决)

热度:698   发布时间:2006-10-20 11:05:34.0
[求助]求50以内勾股数组(已经解决)
求50以内勾股数组,即3个整数满足勾股定理,谢谢先。

问题解决了,谢谢大家提供的各种思路,开阔眼界了啊,呵呵。

[此贴子已经被作者于2006-11-13 14:36:04编辑过]

搜索更多相关的解决方案: 问题  

----------------解决方案--------------------------------------------------------
三重循环1<=i<=48 i+1<=j<=49 j+1<=k<=50.然后直接判断i,j,k是否可以构成三角形且i*i+j*j==k*k是否成立就可以了.


----------------解决方案--------------------------------------------------------
如果 (a, b, c) 是勾股数,它们的正整数倍数,也是勾股数,即 (na, nb, nc) 也是勾股数。若果 a, b, c 三者互质(互

为素数,因为它们的最大公因数是 1)它们就称为素勾股数。


选一个3以上的奇数,将该数自乘为平方数,除以2,答案加减0.5可得到两个新的数字,这两个数字和你开始选取的奇数,

三者必定形成一个奇勾股数。

加上这两个条件对查找大的勾股数可减少时间开销。
----------------解决方案--------------------------------------------------------
数学问题,值得学习
----------------解决方案--------------------------------------------------------
程序代码如下:
#include "stdio.h"
void main()
{
int n=1,Z,Y,X;
for(Z=5;Z<=50;Z++)
for(Y=4;Y<Z;Y++)
for(X=3;X<Y;X++)
if(X*X+Y*Y==Z*Z)
printf("%d:%d,%d,%d\n",n++,X,Y,Z);
return 0;
}
/*输出结果:
1:3,4,5
2:6,8,10
3:5,12,13
4:9,12,15
5:8,15,17
6:12,16,20
7:15,20,25
8:7,24,25
9:10,24,26
10:20,21,29
11:18,24,30
12:16,30,34
13:21,28,35
14:12,35,37
15:15,36,39
16:24,32,40
17:9,40,41
18:27,36,45
19:30,40,50
20:14,48,50
*/
----------------解决方案--------------------------------------------------------
main()
{
int i,j,k;
for(i=1;i<=48;i++)
for(j=i;j<=49;j++)
for(k=1;k<=50;k++)
if(i*i+j*j==k*k)
printf("%4d%4d%4d\n",i,j,k);
getch();
}
----------------解决方案--------------------------------------------------------
以下是引用shuaiye在2006-10-20 12:18:48的发言:
如果 (a, b, c) 是勾股数,它们的正整数倍数,也是勾股数,即 (na, nb, nc) 也是勾股数。若果 a, b, c 三者互质(互

为素数,因为它们的最大公因数是 1)它们就称为素勾股数。


选一个3以上的奇数,将该数自乘为平方数,除以2,答案加减0.5可得到两个新的数字,这两个数字和你开始选取的奇数,

三者必定形成一个奇勾股数。

加上这两个条件对查找大的勾股数可减少时间开销。

你只提供奇勾股数,那偶勾股数呢?


----------------解决方案--------------------------------------------------------
[QUOTE]一个3以上的奇数,将该数自乘为平方数,除以2,答案加减0.5在加1可得到两个新的数字这两个数字和你开始选取

的奇数,三者必定形成一个奇勾股数。(例:3*3=9,9/2=4.5,4.5-0.5=4,4+1=5(3,4,5为勾股数))。

你只提供奇勾股数,那偶勾股数呢?



找个3以上的偶数,将其乘2,在自乘减1和加1,这三个数可成勾股数。(例:4*2=8,4*4=16,16-1=15,16+1=17,(8,

16,17)为勾股数。)

但这些方法可能还没遍例完给定的域,可再利用筛选法对其他未查找的数进行判断筛选。[/QUOTE]
----------------解决方案--------------------------------------------------------

这个方法是不错,shuaiye编程看看


----------------解决方案--------------------------------------------------------
  相关解决方案