勾股數

勾股數

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

基本介紹

  • 中文名:勾股數
  • 外文名:Pythagorean triple
  • 別稱:畢氏三元數
  • 表達式:a2+b2=c2,a,b,c∈N
  • 提出者:《周髀算經
  • 套用學科:幾何
  • 適用領域範圍數學幾何學
常用套路,簡介,第一套路,第二套路,公式證明,證明,推廣形式,完全公式,公式,組數N,編程,Java,C++,Python3.x,整勾股數,常見組合,特殊組合,20以內,20-130,其他公式,

常用套路

簡介

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

第一套路

當a為大於1的奇數2n+1時,b=2n2+2n, c=2n2+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=n2-1, c=n2+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=4n2-1, c=4n2+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=m2-n2
c=m2+n2
證:
假設a2+b2=c2,這裡研究(a,b)=1的情況(如果不等於1則(a,b)|c,兩邊除以(a,b)即可)
如果a,b均奇數,則a2 + b2 = 2(mod 4)(奇數mod4餘1),而2不是模4的二次剩餘,矛盾,所以必定存在一個偶數。不妨設a=2k
等式化為4k2 = (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得證。
依照算術基本定理,k2 = p1a1×p2a2×p3a3×…,其中a1,a2…均為偶數,p1,p2,p3…均為質數
如果對於某個pi,M的pi因子個數為奇數個,那N對應的pi因子必為奇數個(否則加起來不為偶數),從而pi|M, pi|N,(M,N)=pi>1與剛才的證明矛盾 所以對於所有質因子,pi2|M, pi2|N,即M,N都是平方數
設M = m2, N = n2
從而有c+b = 2m2, c-b = 2n2,解得c=m2+n2, b=m2-n2, 從而a=2mn

推廣形式

關於勾股數的公式還是有局限的。勾股數公式可以得到所有的基本勾股數,但是不可能得到所有的派生勾股數。比如3,4,5;6,8,10;9,12,15...,就不能全部有公式計算出來。
但可以採用同乘以任意整數的形式來獲取所有解!
其中規定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。以勾股定理得
,展開並化簡得:,即
,按圖中步驟得
,將任意兩個不相等的正整數數帶入上式,注意a>b,即可得到一組勾股數。不過得到的勾股數可能不互質,要除以三個數的最大公因數,就可得到一組互質的勾股數。
方法圖解方法圖解

相關詞條

熱門詞條

聯絡我們