507. Perfect Number
Совершенное 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/originalpublic 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/originalpublic 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/originalvar 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/originalclass 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/originalfunc 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.