
main::IO()
main = do
  nc<-getLine
  let n = read nc ::Int
  dat<-(get_n n)
  print (solver 1 dat)

--入出力処理

solver :: Int -> [Int] -> Int
solver x [] = 0
solver x (b:rest)= if b<x then solver x rest
                          else if b==x then solver (x+1) rest
                                       else if (mod b x==0) then ((div b x)-1)+(solver (max (1+1) x) rest)
                                                            else (div b x)+(solver (max (1+1) x) rest)
--第一引数は、販売可能最低価格：これは既に購入しきった先客の所有額より1大きいことが保証される。
--第二引数は、これから購入する可能性がある客の所持金リスト。
--先頭客所持金が販売可能最低価格を下回る場合:この金額では先頭客は購入出来ないので、最低価格が後続客へ引き継がれる。
--先頭客所持金と販売可能最低価格と等しい場合：この場合では先頭客は購入出来るが、所持金がゼロになるのを避けるため、
--                                      この客へ販売することなく、販売可能最低価格を引き上げて後続客へ渡す。
--先頭客所持金が販売可能最低価格を上回る場合：この場合、購入ができる。但し所持金がゼロにならないように、あまりを１以上にする。
--                                      少なくともこの顧客はxによる商、または割り切れる場合はそれより1つ少なく購入出来るが、
--                                      後続客への販売可能最低価格を引き上げない為に、この顧客の残り所持金は出来る限り減らしたい。
--                                      これは可能である。この客は1つ以上は購入するので、その内任意の機会で価格を引き上げられる。
--                                      このとき、購入可能数を減らすことなく、この客の残り所持金を１まで落とせるので、
--                                      後続客の販売可能最低価格への追加制約は、1+1=2以上である。


get_n::Int -> IO [Int]
get_n 0 = return []
get_n n = do
          c<-getLine
          let m = read c ::Int
          rest<- (get_n (n-1))
          return (m:rest)