-
勾股數
鎖定
勾股數發展歷史
勾股定理在西方被稱為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為大於1的奇數2n+1時,b=2n²+2n, c=2n²+2n+1。
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)
……
所以如果你只想得到互質的數組,這條可以改成,對於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)即可)
等式化為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得證。
如果對於某個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
勾股數推廣形式
但可以採用同乘以任意整數的形式來獲取所有解!
勾股數完全公式
勾股數公式
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
當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 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和b+n。a、b都是正整數,且a>b
[6]
。以勾股定理得
,展開並化簡得:,即
,按《方法圖解》步驟得
,將任意兩個不相等的正整數數帶入上式,注意a>b,即可得到一組勾股數。不過得到的勾股數可能不互質,要除以三個數的最大公因數,就可得到一組互質的勾股數。