#!/bin/ruby require 'prime' LONGEST = { 1 => 1 } def computeLongestSeq(a) factors = a.prime_division.map { |p, _| p } results = factors.map do |f| piece_size, piece_count = a / f, f 1 + piece_count * longestSequence(piece_size) end results.max end def longestSequence(a) LONGEST[a] = LONGEST[a] || computeLongestSeq(a) end n = gets.strip.to_i a = gets.strip as = a.split(' ').map(&:to_i) results = as.map{|a| longestSequence(a)} result = results.reduce(0, :+) puts result