當前位置:才華齋>計算機>計算機二級>

C++勾股數公式講解

計算機二級 閱讀(5.55K)

C語言是一種計算機程式設計語言,它既具有高階語言的特點,又具有組合語言的特點。以下是小編為大家搜尋整理的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互質,即無法得到派生的勾股數。