劉徽《9章算術》中的勾股數
發表時間:2023-08-21 來源:明輝站整理相關軟件相關文章人氣:
[摘要]若A、B、C為滿足A2+B2=C2的正整數。我國古代數學書《周髀算經》曾經提到“勾廣三,股修四,徑偶五”這三個邊都是正整數的直角三角形。在公元263年時,我國數學家:劉徽寫了一本數學書,書名叫作《九...
若A、B、C為滿足A2+B2=C2的正整數。我國古代數學書《周髀算經》曾經提到“勾廣三,股修四,徑偶五”這三個邊都是正整數的直角三角形。在公元263年時,我國數學家:劉徽寫了一本數學書,書名叫作《九章算術》,其中有
32+42=52
52+122=132
72+242=252
82+152=172
202+212=292
由此看來我國古代數學家已經研究出很多組勾股數。
(一) 見程序設計思路筆算從略
請你編寫程序,求出100之內的所有組勾股數,并打印全部結果。
(二) 程序設計
設計思路
由不定方程:A2+B2=C2 (1)
有定理:不定方程(1)的適合條件
A>0, B>0, C>0, (A,B)=1,2 A
的一切正整數解,可用下列公式表示出來:
A=2XY, B=X2-Y2, C=X2+Y2
這里的X和Y都是正整數,而且X>Y (X、Y)=1,2 (X+Y)
如果按照此定理編寫出源程序當然是可以的。但對不了解此定理的讀者這樣編寫就比較困難。所以這里使用一般的方法。首先設法得到從3到100之間的數的兩組合。利用二重循環可以達到這一目的。令外循環變量為A,A從1到99。令內循環的循環變量為B,B從A+1到100。然后在循環體內判斷A和B是否滿足等式(1)。
將滿足等式的A和B及C打印出來。為了縮短機器運算時間,我們可以利用勾股數的奇偶特性。即在A和B中一個是奇數,另一個必定是偶數。那么可以讓B從A+1開始,每次增加步長為2。因為A若是奇數,A+1就是偶數。以后步長是2,B總是為偶數。如果A是偶數,A+1就是奇數。以后步長是2,B總為奇數。我們用整形變量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