複製鏈接
請複製以下鏈接發送給好友

勾股數

鎖定
勾股數,又名畢氏三元數 。勾股數就是可以構成一個直角三角形三邊的一組正整數勾股定理:直角三角形兩條直角邊a、b的平方和等於斜邊c的平方(a²+b²=c²) [1] 
中文名
勾股數
外文名
Pythagorean triple
別    名
畢氏三元數
表達式
a²+b²=c²,a,b,c∈N
提出者
《周髀算經》
適用領域
數學幾何學
應用學科
幾何

勾股數發展歷史

勾股定理在西方被稱為Pythagoras定理,它以公元前6世紀希臘哲學家和數學家的名字命名。可以有理由認為他是數學中最重要的基本定理之一,因為他的推論和推廣有着廣泛的引用。雖然這樣稱呼,他也是古代文明中最古老的定理之一,實際上比Pythagoras早一千多年的古巴比倫人就已經發現了這一定理,在Plimpton 322泥板上的數表提供了這方面的證據,這塊泥板的年代大約是在公元前1700年。對勾股定理的證明方法,從古至今已有400餘種 [2] 
據《周髀算經》記載,“昔者周公問與商高曰:請問古者包犧立周天歷度。夫天不可階而升.地不可得尺寸而度. 請問數安從出. 商高曰.數之法.出於圓方. 圓出於方.方出於矩. 矩出於九九八十一. 故折矩, 以為句,廣三, 股修四. 徑隅五. 既方其外.半之一矩. 環而共盤.得成三四五. 兩矩共長二十有五.是謂積矩. 故禹之所以治天下者.此數之所生也. 周公曰.大哉言數. 請問用矩之道. 商高曰.平矩以正繩. 偃矩以望高。覆矩以測深.卧矩以知遠. 環矩以為圓.合矩以為方. 方屬地.圓屬天.天圓地方. 方數為典.以方出圓。笠以寫天. 天青黑.地黃赤.天數之為笠也.青黑為表.丹黃為裏.以象天地之位. 是故.知地者智.知天者聖. 智出於句. 句出於矩. 夫矩之於數.其裁製萬物.惟所為耳. 周公曰.善哉。” [3] 
(3n、4n、5n)(n是正整數)(這是最著名的一組!俗稱“勾三,股四,弦五”。古人把較短的直角邊稱為勾,較長直角邊稱為股,而斜邊則為弦。) (5n、12n、13n)(n是正整數)
(6、8、10)
(7、24、25)
(8、15、17)
(9、40、41)
(10、24、26)
(11、60、61)
(12、16、20)
(12、35、37)
(13、84、85)
(15、20、25)
(15、112、113)
(17、144、145)
(18、24、30)
(19、180、181)
(20、21、29)
(20、99、101)
(48、55、73)
(60、91、109)

勾股數常用套路

簡介
所謂勾股數,一般是指能夠構成直角三角形三條邊的三個正整數(例如a,b,c)。
即a²+b²=c²,a,b,c∈N
又由於,任何一個勾股數組(a,b,c)內的三個數同時乘以一個正整數n得到的新數組(na,nb,nc)仍然是勾股數,所以一般我們想找的是a,b,c互質的勾股數組。
關於這樣的數組,比較常用也比較實用的套路有以下兩種 [4] 

勾股數第一類型

當a為大於1的奇數2n+1時,b=2n²+2n, c=2n²+2n+1。
實際上就是把a的平方數拆成兩個連續自然數,例如:
n=1時(a,b,c)=(3,4,5)
n=2時(a,b,c)=(5,12,13)
n=3時(a,b,c)=(7,24,25)
……
這是最經典的一個套路,而且由於兩個連續自然數必然互質,所以用這個套路得到的勾股數組全部都是互質的。

勾股數第二類型

2、當a為大於4的偶數2n時,b=n²-1, c=n²+1
也就是把a的一半的平方分別減1和加1,例如:
n=3時(a,b,c)=(6,8,10)
n=4時(a,b,c)=(8,15,17)
n=5時(a,b,c)=(10,24,26)
n=6時(a,b,c)=(12,35,37)
……
這是第二經典的套路,當n為奇數時由於(a,b,c)是三個偶數,所以該勾股數組必然不是互質的;而n為偶數時由於b、c是兩個連續奇數必然互質,所以該勾股數組互質。
所以如果你只想得到互質的數組,這條可以改成,對於a=4n (大於等於2), b=4n²-1, c=4n²+1,例如:
n=2時(a,b,c)=(8,15,17)
n=3時(a,b,c)=(12,35,37)
n=4時(a,b,c)=(16,63,65)
……

勾股數公式證明

勾股數證明

a=2mn
b=m²-n²
c=m²+n²
證:
假設a²+b²=c²,這裏研究(a,b)=1的情況(如果不等於1則(a,b)|c,兩邊除以(a,b)即可)
如果a,b均奇數,則a² + b² = 2(mod 4)(奇數mod4餘1),而2不是模4的二次剩餘,矛盾,所以必定存在一個偶數。不妨設a=2k
等式化為4k² = (c+b)(c-b)
顯然b,c同奇偶(否則右邊等於奇數矛盾)
作代換:M=(c+b)/2, N=(c-b)/2,顯然M,N為正整數
往證:(M,N)=1
如果存在質數p,使得p|M,p|N, 那麼p|M+N(=c), p|M-N(=b), 從而p|c, p|b, 從而p|a,這與(a,b)=1矛盾
所以(M,N)=1得證。
依照算術基本定理,k² = p₁a₁×p₂a₂×p₃a₃×…,其中a₁,a₂…均為偶數,p₁,p₂,p₃…均為質數
如果對於某個pi,M的pi因子個數為奇數個,那N對應的pi因子必為奇數個(否則加起來不為偶數),從而pi|M, pi|N,(M,N)=pi>1與剛才的證明矛盾 所以對於所有質因子,pi²|M, pi²|N,即M,N都是平方數
設M = m², N = n²
從而有c+b = 2m², c-b = 2n²,解得c=m²+n², b=m²-n², 從而a=2mn

勾股數推廣形式

關於勾股數的公式還是有侷限的。勾股數公式可以得到所有的基本勾股數,但是不可能得到所有的派生勾股數。比如3,4,5;6,8,10;9,12,15...,就不能全部有公式計算出來 [5] 
但可以採用同乘以任意整數的形式來獲取所有解!
其中規定m>n>0(兩負數相乘可抵消固不考慮),(m,n)=1,m和n必須為一奇一偶,t為正整數

勾股數完全公式

勾股數公式

a=m,b=(m^2 / k - k) / 2,c=(m^2 / k + k) / 2 ①
其中m ≥3
⒈ 當m確定為任意一個 ≥3的奇數時,k={1,m^2的所有小於m的因子}
⒉ 當m確定為任意一個 ≥4的偶數時,k={m^2 / 2的所有小於m的偶數因子}
基本勾股數與派生勾股數可以由完全一併求出。例如,當m確定為偶數432時,因為k={432^2 / 2的所有小於432的偶數因子}= {2,4,6,8,12,16,18,24,32,36,48,54,64,72,96,108,128,144,162,192,216,288,324,384},將m=432及24組不同k值分別代入b=(m^2 / k - k) / 2,c=(m^2 / k + k) / 2;即得直角邊a=432時,具有24組不同的另一直角邊b和斜邊c,基本勾股數與派生勾股數一併求出。而勾股數的組數也有公式能直接得到。

勾股數組數N

算術基本定理:一個大於1的正整數n,如果它的標準分解式為n=p1^m1×p2^m2×……×pr^mr,那麼它的正因數個數為N=(m1+1)×(m2+1)×……×(mr+1);依據定理,易得以下結論
當a給定時,不同勾股數組a,b,c的組數N等於①式中k的可取值個數
⒈ 取奇數a=p1^m1×p2^m2×……×pr^mr,其中k={1,a^2的所有小於a的因子},則k的可取值個數:
N=[(2m1+1)×(2m2+1)×……×(2mr+1)-1]/2
⒉ 取偶數a=2^m0×p1^m1×p2^m2×……×pr^mr,其中k={a^2 / 2的所有小於a的偶數因子},則k的可取值個數:
N=[(2m0-1)×(2m1+1)×(2m2+1)×……×(2mr+1)-1]/2
其中,p1,p2,……,pr為互不相同的奇素數,m0,m1,……,mr為冪指數。

勾股數編程

Java
import java.math.*;
public class Test{
 public static void main(String[] args){
 int number=0;
 int a=3,b,c;
 double d;
 for(;a<100;a++)
 for(b=a+1;b<100;b++){
 d=Math.sqrt(a*a+b*b);
 c=(int)d;
 if(c>100)break;
 if(d-c<=0){
 number++;
 System.out.print("("+a+""+b+""+c+")");
 if(number%4==0){
 System.out.println();
 }
 }
 }
 System.out.println("共有"+number+"組");
 }
 }
C++
#include <iostream>
using namespace std;
int main()
{
    int a, b, c;
    for (a = 1; a < 100; a++)
    for (b = 1; b < 100; b++)
    for (c = 1; c < 100; c++)
    if (a<b && a*a + b*b == c*c)
        cout << a << " " << b << " " << c << endl;
    return 0;
}
Python3.x
#通過公式求勾股數
def Ht(k, m):
            '''
            a = k * (m * m - n * n)
     b = k * (2 * m * n)
     c = k * (m * m  + n * n)
    '''
    result = []
    for k0 in range(1, k + 1):
        for m0 in range(2, m + 1):
            for n0 in range(1, m0):
                a = k0 * (m0 * m0 - n0 * n0)
                b = k0 * (2 * m0 * n0)
                c = k0 * (m0 * m0  + n0 * n0)
                if not {a, b, c} in result:
                    result.append({a, b, c})
    result = [sorted(list(x)) for x in result]
    return (sorted(result,key=lambda x:x[0]),
    '共有 {length} 組勾股數'.format(length = len(result)))
Ht(10, 10)  

勾股數整勾股數

勾股數常見組合

3,4,5 : 勾三股四弦五
5,12,13 : 5·21(12)記一生(13)
6,8,10: 連續的偶數
8,15,17 : 八月十五在一起(17)

勾股數特殊組合

連續的勾股數只有3,4,5
連續的偶數勾股數只有6,8,10

勾股數20以內

3 4 5;5 12 13; 6 8 10;8,15,17;9 12 15

勾股數20-130

7 24 259 40 41;10 24 26;11 60 61;12 16 20;12 35 37;13 84 85;14 48 50;15 20 25;15 36 39;15 112 113;16 30 34;16 63 65;18 24 30;18 80 82;20 21 29;20 48 52;20 99 101;21 28 35;21 72 75;22 120 122;24 32 40;24 45 51;24 70 74;25 60 65;27 36 45;28 45 53;28 96 100;30 40 50;30 72 78;32 60 68;33 44 55;33 56 65;35 84 91;36 48 60;36 77 85;39 52 65;39 80 89;40 42 58;40 75 85 ;40 96 104;42 56 70 ; 45 60 75 ; 48 55 73 ; 48 64 80 ; 48 90 102 ; 51 68 85 ;54 72 90 ; 56 90 106 ; 57 76 95 ; 60 63 87 ; 60 80 100 ;60 91 109 ; 63 84 105 ; 65 72 97 ; 66 88 110 ; 69 92 115 ;72 96 120 ; 75 100 125 ; 80 84 116。
三個數都在100以內共有52組。

勾股數其他公式

方法圖解 方法圖解
三個任意半徑的圓相互外切,其半徑兩兩相加,分別是以三個圓的圓心為頂點的三角形的三個邊長。如《方法圖解》所示:設一直角三角形斜邊為a+n,另兩個直角邊分別是a+b和b+n。a、b都是正整數,且a>b [6]  。以勾股定理得
,展開並化簡得:,即
,按《方法圖解》步驟得
,將任意兩個不相等的正整數數帶入上式,注意a>b,即可得到一組勾股數。不過得到的勾股數可能不互質,要除以三個數的最大公因數,就可得到一組互質的勾股數。
參考資料
  • 1.    曹才翰.中國中學教學百科全書:數學卷[M].瀋陽:瀋陽出版社
  • 2.    朱哲. 數學史中勾股定理的證明[J]. 數學教學, 2006(3):43-46.
  • 3.    馮禮貴. 《周髀算經》中數學內容研究[J]. 教學與管理:中學版, 1987(7):2-13.
  • 4.    朱一心. 含兩個相鄰整數的勾股數[J]. 數學的實踐與認識, 2017, 47(13):216-225.
  • 5.    關春河. 空間勾股定理及空間勾股數[J]. 高師理科學刊, 2007, 27(4):35-38.
  • 6.    顏有祥. 3維勾股數的性質及其計算方法[J]. 新鄉學院學報, 2010, 27(3):3-6.