Здравствуйте!
Я полный новичок и выполняю всякие разные задания на англо-язычном сайте. Вроде как сделал свою программу правильно, однако ответ не засчитывается из-за слишком долгого времени компилирования. Помогите, пожалуйста, немного её оптимизировать, и, если возможно, дайте пару советов на будущее.
Спасибо!
Задание:
Сводка
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
}