C語言是一種計算機程式設計語言,它既具有高階語言的特點,又具有組合語言的特點。以下是小編為大家搜尋整理的C++勾股數公式講解, 希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!
Roowe很喜歡研究數學,現在他就遇到一個有趣的問題,比如,直角三角形的周長是120的話,那麼它的'三條邊可以是20,48,52,或者24,45,51,還有30,40, 50,有三種不同的解,現在他想知道一個區間[a,b]中哪個數的解數最多(1<= a, b <= 1000000)?
輸入
10 100
1000 100000
1 1000000
300000 700000
100000 300000
100000 700000
800000 900000
104 720720
80 360360
1 1000000
輸出
60 2
55440 40
720720 104
360360 80
240240 64
360360 80
831600 78
720720 104
360360 80
720720 104
直角三角形三條邊a, b, c,其中a,b是直角邊。
則 a=2*m*n
b=m^2-n^2
c=m^2+n^2
當然,這是有前提條件的,也就是其侷限性:“勾股數的公式還是有侷限的。勾股數公式可以得到所有的基本勾股數,但是不可能得到所有的派生勾股數。比如6,8,10;9,12,15…,就不能全部有公式計算出來”
也就是說,3,4,5可以求出來,但是其倍數6,8,10就不行了。
這裡要注意幾個問題構成三角形的條件
2*m*n+m^2-n^2 > m^2+n^2
既m>n
2.a, b, c互質,即無法得到派生的勾股數。