【數論】本原勾股數組(PPT)的性質


目錄


基本性質

  勾股數組我們都很熟悉,給一個勾股數組同乘一個整數得到的仍是勾股數組,但我們對它並不感興趣,今天我們只研究它的本原形式(當然是在正整數范圍內)。

本原勾股數組(PPT)是一個滿足 $ a^{2}+b^{2}=c^{2} $ 的三元組 $ (a,b,c) $ ,且 \(a,b,c\) 互素(除1外沒有其他公因數)。
例如:$ (3,4,5) (5,12,13) (15,8,17) (7,24,25) (21,20,29) (35,12,37) (9,40,41) $

  觀察這些例子,我們容易得到一些結論。例如,

性質1.(1) 本原勾股數組 $ (a,b,c) $ 中, \(a\)\(b\)奇偶性不同,並且\(c\)為奇數。

  這是正確的,證明如下(分類討論):

    若 \(a,b\) 均為偶數,那么\(c\)也為偶數,則此勾股數組不是本原的,排除;
    若 \(a,b\) 均為奇數,那么\(c\)為偶數,則必存在正整數 \(x,y,z\) 使得 $ a=2x+1, b=2y+1, c=2z$ ,於是有

$(2x+1)^{2}+(2y+1)^{2}=(2z)^{2}$, $4x^{2}+4x+4y^{2}+4y+2=4z^{2}$, $2x^{2}+2x+2y^{2}+2y+1=2z^{2}$

    由於兩邊奇偶性不同,故等式不成立;
    因此\(a,b\)奇偶性不同,由此\(c\)為奇數(方便起見,我們約定,如無特殊說明,下文中\(a\)為奇數,\(b\)為偶數)
 


勾股數組定理

  有了這個性質以后,我們就可以開始考慮求解一個問題:如何求出所有的本原勾股數組?換句話說,如何表示出方程\(a^{2}+b^{2}=c^{2}\)(\(a\)為奇數,\(b\)為偶數,且\(a,b,c\)互素)的所有正整數解?

  先寫出結論:

(勾股數組定理)每個本原勾股數組(a,b,c)(a為奇數,b為偶數)均可以由下面的公式給出

**$a=st,b=\frac{(s^{2}-t^{2})}{2},c=\frac{(s^{2}+t^{2})}{2}$**
**其中 $s>t\geq1,s,t$ 互素且均為奇數**

  下面,我們將使用因式分解與整除性證明這一定理。

  首先移項並進行因式分解:\(a^{2}=(c+b)(c-b)\)
  然后……就沒有思路了 o(╯□╰)o 別急,我們先列個表看看這個式子有什么性質:

$3=(5+4)(5-4)=9\cdot1$ $5=(13+12)(13-12)=25\cdot1$ $15=(17+8)(17-8)=25\cdot9$ $7=(25+24)(25-24)=49\cdot1$ $21=(29+20)(29-20)=49\cdot9$ $35=(37+12)(37-12)=49\cdot25$

  我們發現,貌似..... \(c+b\)\(c-b\) 都是完全平方數誒,而且 \(c+b\)\(c-b\) 好像是互素的。等等, \(c+b\)\(c-b\) 的積\(a^{2}\)是完全平方數,假設 \(c+b\)\(c-b\) 互素,那么由唯一分解定理,就可以推出 \(c+b\)\(c-b\) 都是完全平方數(這是顯然的,因為 \(c+b\)\(c-b\) 分解到的素數完全不同)。於是接下來證明 \(c+b\)\(c-b\) 互素:設整數d整除 \(c+b\)\(c-b\) (即\(d\)\(c+b\)\(c-b\) 的公因數),那么\(d\)也整除

$(c+b)+(c-b)=2c, (c+b)-(c-b)=2b$

  又 \(b\)\(c\) 互素,那么\(d\)只能等於1或2。又\(d\)整除\(c-b\)(奇數),那么\(d\)只能等於1(或者也可以由\(d\)整除 \((c-b)(c+b)=a^{2}\)\(a\)為奇數推出)。於是 \(c+b\)\(c-b\) 的公因數只有1(也即互素),即可得到 \(c+b\)\(c-b\) 均為完全平方數,於是有:

$ c+b=s^{2}, c-b=t^{2} $

其中\(s>t≥1\)\(s,t\)互素且均為奇數(這樣才能滿足 \(c+b\)\(c-b\) 的其它性質)
關於\(c\)\(b\)解方程,並代入求\(a\)得到

$b=\frac{(s^{2}-t^{2})}{2},c=\frac{(s^{2}+t^{2})}{2},a=\sqrt{c^{2}-b^{2}}=st$

  


代碼與例題

  那么,這個定理有什么用呢?當然就是打表列舉本原勾股數組了,代碼如下:

int gcd(int a,int b){ //求a,b的最大公因數
	return b==0?a:gcd(b,a%b);
}
void ppt_table(int n){ //打印所有c不超過n的本原勾股數組
	int a,b,c;
	int maxs=(int)sqrt(2*n); //s的上界
	for(int s=2;s<=maxs;s++)
		for(int t=1;t<s;t++)
			if(s%2 && t%2 && gcd(s,t)==1){
			a=s*t;
			b=(s*s-t*t)/2;
			c=(s*s+t*t)/2;
			if(c<=n) printf("%d %d %d",a,b,c);
			}
}

例題(這個知識點的題幾乎沒有,事實上我只找到這一個):
洛谷 UVA106 費馬vs畢達哥拉斯
題意:給定\(N\),求:1.滿足\(c≤N\)的本原勾股數組的個數;2.滿足\(c≤N\)的勾股數組(不一定本原)都不包含的正整數 \(p(0<p≤N)\) 的個數。
分析:使用勾股數組定理,將上面的代碼稍稍更改一下即可。

展開查看源代碼 ``` #include #include #include using namespace std;

const int N=1e6+5;
int vis[N],cnt,ans;

int gcd(int a,int b){
return b0?a:gcd(b,a%b);
}
void solve(int n){
int a,b,c;
int maxs=(int)sqrt(2*n);
for(int s=2;s<=maxs;s++)
for(int t=1;t<s;t++)
if(s%2 && t%2 && gcd(s,t)
1){
a=st;
b=(s
s-tt)/2;
c=(s
s+tt)/2;
if(c<=n) cnt++;
for(int k=1;k
c<=n;k++)
vis[ka]=vis[kb]=vis[k*c]=1;
}
}

int main(){
int n;
while(scanf("%d",&n)==1){
solve(n);
for(int i=1;i<=n;i++)
if(!vis[i]) ans++;
printf("%d %d\n",cnt,ans);
memset(vis,0,sizeof(vis));
cnt=ans=0;
}
return 0;
}

</details>
&nbsp;

_____
## <span id="4">其他性質</span>
  有沒有注意到第一個性質的序號是“1.(1)”?沒錯,這樣類似的性質還有兩條,證明方法是類似的:

>**性質1.(2) 本原勾股數組 $ (a,b,c) $ 中, $a$ 與 $b$ 有且僅有一個是$3$的倍數,並且$c$不是$3$的倍數。**
>**性質1.(3) 本原勾股數組 $ (a,b,c) $ 中, $a,b,c$ 中有且僅有一個是$5$的倍數。**

  證明方法與性質1.(1)完全類似,分類討論並一一排除即可。值得一提的是,在證明 $a,b,c$ 不可能都不是$5$的倍數時,會發現諸多情況中,左式模$5$的值總是$0,2,3$,而右式的總是$1,4$,於是這一情況不成立。
  另外,由勾股數組定理也可以推出幾條~~有趣的~~性質:

>**性質2. 本原勾股數組 $ (a,b,c) $ 中, 若 $s-t=2$,則 $c-a=2$。**
>**性質3. 本原勾股數組 $ (a,b,c) $ 中, $2(c-a)$ 是完全平方數。**

  證明:由勾股數組定理,$2(c-a)=s^{2}+t^{2}-2st=(s-t)^{2}=4$,故 $s-t=2$.
&nbsp;

______
## <span id="5">與單位圓的聯系</span>
用 $c^{2}$ 除方程 $ a^{2}+b^{2}=c^{2} $ 得到

<center>$ (\frac{a}{c})^{2}+(\frac{b}{c})^{2}=1$</center>

因此,有理數對 $(a/c,b/c)$ 是方程 $x^{2}+y^{2}=1$ 的解。

令 $u=\frac{s+t}{2},v=\frac{s-t}{2}$ ,

由勾股數組定理得到, $(a,b,c)=(u^{2}-v^{2},2uv,u^{2}+v^{2})$

同除以 $u^{2}+v^{2}$ ,得到 $(\frac{u^{2}-v^{2}}{u^{2}+v^{2}},\frac{2uv}{u^{2}+v^{2}},1)$

令 $m=u/v$,於是有 $(a,b)=(\frac{1-m^{2}}{1+m^{2}},\frac{2m}{1+m^{2}})$ ,這便是可以給出單位圓上所有有理點的定理:

>**定理:圓 $x^{2}+y^{2}=1$ 上的所有坐標為有理數的點都可以由公式**
>**<center> $(x,y)=(\frac{1-m^{2}}{1+m^{2}},\frac{2m}{1+m^{2}})$ </center>**
>**得到,其中$m$取有理數值。(點 $(-1,0)$ 除外,這是當 $m\to\infty$ 的極限值)**

  事實上,上述推理並不嚴謹,這個定理嚴格一些的證明需要從過點 $(-1,0)$ 的直線及其斜率出發,各位看官若是有興趣可自行完成證明。

End.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM