Помогите с оптимизацией кода новичку

swift

#1

Здравствуйте!

Я полный новичок и выполняю всякие разные задания на англо-язычном сайте. Вроде как сделал свою программу правильно, однако ответ не засчитывается из-за слишком долгого времени компилирования. Помогите, пожалуйста, немного её оптимизировать, и, если возможно, дайте пару советов на будущее.

Спасибо!

Задание:

Сводка

Find all integers between m and n , such that the sum of their squared divisors is itself a square.

Код:

func listSquared(_ m: Int, _ n: Int) -> [(Int, Int)] {
  var divisors = Set<Int>()
  var divisorsx = [Int]()
  var sum: Int = 0
  var arr = [(Int, Int)] ()
    for i in m...n {
      for j in 1...i {
        if i % j == 0 {
          divisors.insert(j)
        }        
      }
      divisorsx = divisors.map{ $0*$0 }
      divisors.removeAll()
      sum = divisorsx.reduce( 0, + )
      for k in 0...i*2 {
        if sum == k*k {
          arr.append((i, sum))
        }
      }
    }
  return arr
}