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