?? 劉徽《九章算術(shù)》中的勾股數(shù).txt
字號:
劉徽《九章算術(shù)》中的勾股數(shù)
(加入日期:2003-4-27 點(diǎn)擊數(shù):2138)
【對此文發(fā)表評論】 【編程愛好者論壇】 【保存文章至硬盤】 【打印文章】
若A、B、C為滿足A2+B2=C2的正整數(shù)。我國古代數(shù)學(xué)書《周髀算經(jīng)》曾經(jīng)提到“勾廣三,股修四,徑偶五”這三個邊都是正整數(shù)的直角三角形。在公元263年時,我國數(shù)學(xué)家:劉徽寫了一本數(shù)學(xué)書,書名叫作《九章算術(shù)》,其中有
32+42=52
52+122=132
72+242=252
82+152=172
202+212=292
由此看來我國古代數(shù)學(xué)家已經(jīng)研究出很多組勾股數(shù)。
(一) 見程序設(shè)計思路筆算從略
請你編寫程序,求出100之內(nèi)的所有組勾股數(shù),并打印全部結(jié)果。
(二) 程序設(shè)計
設(shè)計思路
由不定方程:A2+B2=C2 (1)
有定理:不定方程(1)的適合條件
A>0, B>0, C>0, (A,B)=1,2 | A
的一切正整數(shù)解,可用下列公式表示出來:
A=2XY, B=X2-Y2, C=X2+Y2
這里的X和Y都是正整數(shù),而且X>Y (X、Y)=1,2|(X+Y)
如果按照此定理編寫出源程序當(dāng)然是可以的。但對不了解此定理的讀者這樣編寫就比較困難。所以這里使用一般的方法。首先設(shè)法得到從3到100之間的數(shù)的兩組合。利用二重循環(huán)可以達(dá)到這一目的。令外循環(huán)變量為A,A從1到99。令內(nèi)循環(huán)的循環(huán)變量為B,B從A+1到100。然后在循環(huán)體內(nèi)判斷A和B是否滿足等式(1)。
將滿足等式的A和B及C打印出來。為了縮短機(jī)器運(yùn)算時間,我們可以利用勾股數(shù)的奇偶特性。即在A和B中一個是奇數(shù),另一個必定是偶數(shù)。那么可以讓B從A+1開始,每次增加步長為2。因為A若是奇數(shù),A+1就是偶數(shù)。以后步長是2,B總是為偶數(shù)。如果A是偶數(shù),A+1就是奇數(shù)。以后步長是2,B總為奇數(shù)。我們用整形變量I、J、L分別代表A、B、C
FORTRON源程序:
WRITE(*,30)
DO 10 I=3,99
K=I+1
DO 10 J=K,100,2
S=I*I+J*J
S=SQRT(S)
L=S
IF(L.GT.100.OR.ABS(S-L).GT.0.1E-06) GOTO 10
WRITE(*,20)I,J,L
10 CONTINUE
20 FORMAT(2IX,3I5)
30 FORMAT(25X,’A B C ‘/20X,’--------------------’)
END
BASIC源程序
10 PRINT "A B C"
20 PRINT "--------------------------------"
30 FOR I = 3 TO 99
40 K = I + 1
45 FOR J = K TO 100
50 S = I * I + J * J
60 S = SQR(S)
70 L = INT(S)
80 IF L >= 100 OR L <> S THEN 100
90 PRINT I, J, L
100 NEXT J
110 NEXT I
本欄文章均來自于互聯(lián)網(wǎng),版權(quán)歸原作者和各發(fā)布網(wǎng)站所有,本站收集這些文章僅供學(xué)習(xí)參考之用。任何人都不能將這些文章用于商業(yè)或者其他目的。( ProgramFan.Com )
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -