https://leetcode.com/problems/perfect-number Easy

Решение

fun checkPerfectNumber(num: Int): Boolean {
    if (num <= 1) return false  // Число 1 и отрицательные числа не могут быть совершенными

    var sum = 1  // Начинаем с 1, так как это делитель для всех положительных чисел
    var i = 2

    // Находим делители до квадратного корня из числа без использования Math.sqrt
    while (i * i <= num) {
        if (num % i == 0) {
            sum += i  // Добавляем делитель
            if (i != num / i) {
                sum += num / i  // Добавляем соответствующий парный делитель, если он отличается
            }
        }
        i++
    }

    return sum == num  // Проверяем, равна ли сумма делителей самому числу
}