次のことを行うために、単純な 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 に戻ります)。最大除数を計算するには、どのように変更する必要がありますか?
よろしくお願いします!