507. Perfect Number

LeetCode easy original: C# #csharp #easy #graph #leetcode #search
Task text is translated from Russian for the selected interface language. Code is left unchanged.

Совершенное number — это положительное integer, которое равно сумме своих положительных делителей, исключая само number. Делитель целого числа x — это integer, которое может делить x нацело.

given integer n, return true, если n является совершенным numberм, в противном случае return false.

Example:

Input: num = 28

Output: true

Explanation: 28 = 1 + 2 + 4 + 7 + 14

1, 2, 4, 7, and 14 are all divisors of 28.

C# solution

matched/original
public class Solution {
    public bool CheckPerfectNumber(int num) {
        if (num <= 0) return false;
        int sum = 0;
        for (int i = 1; i * i <= num; i++) {
            if (num % i == 0) {
                sum += i;
                if (i * i != num) {
                    sum += num / i;
                }
            }
        }
        return sum - num == num;
    }
}

C++ solution

auto-draft, review before submit
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public bool CheckPerfectNumber(int num) {
        if (num <= 0) return false;
        int sum = 0;
        for (int i = 1; i * i <= num; i++) {
            if (num % i == 0) {
                sum += i;
                if (i * i != num) {
                    sum += num / i;
                }
            }
        }
        return sum - num == num;
    }
}

Java solution

matched/original
public boolean checkPerfectNumber(int num) {
        if (num <= 0) {
            return false;
        }
        int sum = 0;
        for (int i = 1; i * i <= num; i++) {
            if (num % i == 0) {
                sum += i;
                if (i * i != num) {
                    sum += num / i;
                }

            }
        }
        return sum - num == num;
    }
}

JavaScript solution

matched/original
var checkPerfectNumber = function(num) {
    if (num <= 0) return false;
    let sum = 0;
    for (let i = 1; i * i <= num; i++) {
        if (num % i === 0) {
            sum += i;
            if (i * i !== num) {
                sum += num / i;
            }
        }
    }
    return sum - num === num;
};

Python solution

matched/original
class Solution:
    def checkPerfectNumber(self, num: int) -> bool:
        if num <= 0:
            return False
        sum_ = 0
        for i in range(1, int(num ** 0.5) + 1):
            if num % i == 0:
                sum_ += i
                if i * i != num:
                    sum_ += num // i
        return sum_ - num == num

Go solution

matched/original
func checkPerfectNumber(num int) bool {
    if num <= 0 {
        return false
    }
    sum := 0
    for i := 1; i*i <= num; i++ {
        if num%i == 0 {
            sum += i
            if i*i != num {
                sum += num / i
            }
        }
    }
    return sum-num == num
}

Algorithm

Инициализация

Если number num меньше или равно 0, вернуть false. Инициализируйте переменную sum значением 0.

Поиск делителей и вычисление суммы

Переберите числа от 1 до квадратного корня num. Если number является делителем num, добавьте его к sum. Если делитель не равен квадратному корню num, добавьте к sum также результат деления num на делитель.

Проверка на совершенное number

Вычтите num из sum. Если результат равен num, вернуть true, иначе вернуть false.

😎

Vacancies for this task

Active vacancies with overlapping task tags are shown.

All vacancies
There are no active vacancies yet.