Nächste Seite: Aufgabe 3
Aufwärts: Lösungen
Vorherige Seite: Aufgabe 1
  Inhalt
PROGRAM A_03
IMPLICIT NONE
INTEGER :: a, b, a_save, b_save, ggT, kgV, iostat
DO
DO
WRITE (*,'(A)',ADVANCE='NO') 'geben Sie zwei INTEGER-Zahlen ein: '
READ (*,*,IOSTAT=iostat) a,b
IF ((iostat == 0) .AND. (a > 0) .AND. (b > 0)) EXIT
ENDDO
a_save = a; b_save = b
DO ! besser mit Hilfsvariablen:
IF (a > b) THEN ! g = MAX(a,b); k = MIN(a,b)
a = MOD(a,b) ! DO
IF (a == 0) THEN ! h = MOD(g,k)
ggT = b ! IF (h == 0) THEN
EXIT ! ggT = k
ENDIF ! EXIT
ELSE ! END IF
b = MOD(b,a) ! g = k; k = h
IF (b == 0) THEN ! END DO
ggT = a
EXIT
ENDIF
ENDIF
ENDDO
IF (MOD(MAX(a_save,b_save),MIN(a_save,b_save)) == 0) THEN
kgV = MAX(a_save,b_save) ! kann man auch anders definieren,
ELSE ! dann entfaellt auch dieser Zweig!
kgV = a_save*b_save/ggT ! kgV(3,15) = 15 oder 45, je nach Definition
ENDIF
WRITE (*,*) ggT, kgV
END DO
END
Reinfried O. Peter
2001-09-07