Проверка, является ли число счастливым

Напишите функцию на Kotlin или Java, которая проверяет, является ли данное число "счастливым". Счастливое число определяется следующим образом:

  • Начинаем с любого положительного целого числа.
  • Заменяем число суммой квадратов его цифр.
  • Повторяем процесс, пока число не станет равным 1 (где оно останется), или пока не начнет бесконечно повторяться в цикле, который не включает 1.
  • Число является счастливым, если оно становится равным 1, и несчастливым, если оно зацикливается на других значениях.

Примеры:

  1. Вход: 19 Выход: true Объяснение:

    • 1^2 + 9^2 = 82
    • 8^2 + 2^2 = 68
    • 6^2 + 8^2 = 100
    • 1^2 + 0^2 + 0^2 = 1 (счастливое число)
  2. Вход: 2 Выход: false Объяснение: В конечном итоге будет зацикливаться, не достигая 1.

fun isHappy(n: Int): Boolean {
    var number = n
    val seen = mutableSetOf<Int>()

    while (number != 1 && number !in seen) {
        seen.add(number)
        number = getSumOfSquares(number)
    }

    return number == 1
}

private fun getSumOfSquares(n: Int): Int {
    var sum = 0
    var number = n

    while (number > 0) {
        val digit = number % 10
        sum += digit * digit
        number /= 10
    }

    return sum
}