数学小知识:勾股数
對于勾股數想必大家一定很熟悉,小學開始就知道直角三角形的邊長關系滿足勾股定理.不過,關于勾股數的更多性質,卻很少會去探究.那么如何快速地產生勾股數三元組呢?
如果a,b,c三者兩兩互質,那么稱為素勾股數.由于非素勾股數都可以轉化為素勾股數(除掉公因子后,即互質),所以,這里只研究素勾股素.
一.性質分析
1.如果a,b互質,那么a和b當中有且僅有一個奇數
證明過程如下:
(注意:上述所說任意完全平方整數實為完全平方偶數)
2.找出勾股數的方法
這里找出的u,v是正整數且v>u.使用與1同樣的方法可以證明u,v互質時,二者奇偶性不同.
這樣我們編程時,用這個方法枚舉,那就比不利用這樣的性質要快得多
代碼如下:
| 001002003004005006007008009010 | for(int u = 1; u <= sqrt(n);++u)???for(int v = u+1; v <= sqrt(n); v+=2)???{???????if(gcd(u,v)==1)???????{????????????a = 2*u*v;????????????b = v*v-u*u;????????????c = v*v+u*u;???????}???} |
- 上面的循環v>u,所以v總是從u+1開始
- v=u+1同時每次自增2,保證了二者奇偶性一直不同
轉載于:https://www.cnblogs.com/shihao/archive/2012/01/18/2325593.html
總結
- 上一篇: C#WindowsForm之创建窗体
- 下一篇: WinForm中Combobox绑定值问