1

次のことを行うために、単純な FORTRAN コードを書きました。共通の約数を持つ整数 n1 と n2 が必要であると仮定します。たとえば、3 と 6 は両方とも 3 で除算されます。コードは次のとおりです。

PROGRAM test

INTEGER i,n1,n2

WRITE(*,*)' Please enter two numbers: '
READ(*,*)n1,n2

DO i=2,10,1
  IF(MOD(n1,i).EQ.0.AND.MOD(n2,i).EQ.0)THEN
     n1=n1/i
     n2=n2/i
  ENDIF
    n1=n1
    n2=n2
ENDDO

WRITE(*,*)n1,n2

PAUSE

END      

これは、例 (3,6) では問題なく機能します。ただし、(4,8) のように、数値に複数の公約数 (この場合は 2 と 4) がある場合があります。別の例 (16,24)。2 つの数値の最大公約数を計算してから (3,6 を 1 と 2 に) 減らしたいのですが、コードは最初の数値を返します (4,8 は 1,2 ではなく 2, 4 に戻ります)。最大除数を計算するには、どのように変更する必要がありますか?

よろしくお願いします!

4

2 に答える 2