明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

劉徽《9章算術(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ū)名叫作《九...
若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