! ! FizzBuzz ! PROGRAM main INTEGER A, fizzbuzz WRITE(*,'(A)', advance='no') 'FizzBuzz to N? : ' READ(*,*) N DO 10 I=1,N A=fizzbuzz(I) IF (A .EQ. 0) THEN WRITE(*,'(I3A)', advance='no') I, ', ' ELSE IF (A - A/2*2 .NE. 0) THEN ! ビット1が立っているか WRITE(*,'(A)', advance='no') 'Fizz' ENDIF IF (A/2 - A/4*2 .NE. 0) THEN ! ビット2が立っているか WRITE(*,'(A)', advance='no') 'Buzz' ENDIF IF (A .NE. 0) THEN WRITE(*, '(A)', advance='no') ', ' ENDIF 10 CONTINUE END PROGRAM main INTEGER FUNCTION fizzbuzz(n) INTEGER X, N X=0 IF (N/3*3 .EQ. N) THEN X = X + 1 ! 0x01 ---> Fizz ENDIF IF (N/5*5 .EQ. N) THEN X = X + 2 ! 0x10 ---> Buzz ENDIF fizzbuzz = X END FUNCTION fizzbuzz