勾股數

勾股數

勾股數,又名畢氏三元數。勾股數就是可以構成一個直角三角形三邊的一組正整數。勾股定理:直角三角形兩條直角邊a、b的平方和等於斜邊c的平方(a²+b²=c²)。徠

發展歷史


勾股定理在西方被稱為Pythagoras定理,它以公元前6世紀希臘哲學家和數學家的名字命名。可以有理由認為他是數學中最重要的基本定理之一,因為他的推論和推廣有著廣泛的引用。雖然這樣稱呼,他也是古代文明中最古老的定理之一,實際上比Pythagoras早一千多年的古巴比倫人就已經發現了這一定理,在Plimpton 322泥板上的數表提供了這方面的證據,這塊泥板的年代大約是在公元前1700年。對勾股定理的證明方法,從古至今已有400餘種。
據《周髀算經》記載,“昔者周公問與商高曰:請問古者包犧立周天歷度。夫天不可階而升.地不可得尺寸而度. 請問數安從出. 商高曰.數之法.出於圓方. 圓出於方.方出於矩. 矩出於九九八十一. 故折矩,以為句,廣三,股修四. 徑隅五. 既方其外.半之一矩. 環而共盤.得成三四五. 兩矩共長二十有五.是謂積矩. 故禹之所以治天下者.此數之所生也. 周公曰.大哉言數. 請問用矩之道. 商高曰.平矩以正繩. 偃矩以望高。覆矩以測深.卧矩以知遠. 環矩以為圓.合矩以為方. 方屬地.圓屬天.天圓地方. 方數為典.以方出圓。笠以寫天. 天青黑.地黃赤.天數之為笠也.青黑為表.丹黃為里.以象天地之位. 是故.知地者智.知天者聖. 智出於句. 句出於矩. 夫矩之於數.其裁製萬物.惟所為耳. 周公曰.善哉。”
(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)內的三個數同時乘以一個整數n得到的新數組仍然是勾股數,所以一般我們想找的是a,b,c互質的勾股數組。
關於這樣的數組,比較常用也比較實用的套路有以下兩種:

第一類型

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

第二類型

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

公式證明


證明

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

推廣形式

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

完全公式


公式

其中
⒈ 當m確定為任意一個 ≥3的奇數時,k={1,的所有小於m的因子}
⒉ 當m確定為任意一個 ≥4的偶數時,k={的所有小於m的偶數因子}
基本勾股數與派生勾股數可以由完全一併求出。例如,當m確定為偶數432時,因為k={的所有小於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},將及24組不同k值分別代入,;即得直角邊時,具有24組不同的另一直角邊b和斜邊c,基本勾股數與派生勾股數一併求出。而勾股數的組數也有公式能直接得到。

組數N

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

編程上的體現


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 
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
cout << a << " " << b << " " << c << endl;
return 0;
}

Python3

#通過公式求勾股數
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 25;9 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都是正整數,且。以勾股定理得,展開並化簡得:即,按圖中步驟得,將任意兩個不相等的正整數數帶入上式,注意,即可得到一組勾股數。不過得到的勾股數可能不互質,要除以三個數的最大公因數,就可得到一組互質的勾股數。
  • 目錄