home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / adaptor.zip / adapt.zip / adaptor / examples / fakul / fakul.f next >
Text File  |  1993-03-23  |  941b  |  42 lines

  1.       Program fakul
  2. CC
  3. CC    Fakultaetsprogram, FORTRAN 90 Version
  4. CC
  5.       integer max
  6.       integer feld(:), carry(:)
  7.       integer I,K,N
  8.       integer length
  9.       integer s, lastval
  10.  
  11.       print *, 'Input value N !'
  12.       read *, N
  13.       print *, 'Input upper limit for size !'
  14.       read *, max
  15.  
  16.       allocate (feld(1:max), carry(1:max))
  17.  
  18.       feld = 0
  19.       carry = 0
  20.  
  21.       feld(1)=1
  22.       length = 1
  23.  
  24.       do K=N,1,-1
  25.         feld (1:length) = (feld(1:length) + carry(1:length)) * K
  26.         carry (1:length) = feld(1:length) / 65536
  27.         feld (1:length) = feld(1:length) - carry(1:length) * 65536
  28.         if (carry(length) .NE. 0) length = length + 1
  29.         carry = cshift (carry,1,-1)
  30.       end do
  31.      
  32.       lastval = feld(length)
  33.       s = sum (feld (1:length))
  34.  
  35.       deallocate (carry, feld)
  36.  
  37.       print *, 'Size        = ', length
  38.       print *, 'Lastval     = ', lastval
  39.       print *, 'Control sum = ', s
  40.       end
  41.  
  42.