263. Ugly Number

LeetCode easy оригинал: C# #array #csharp #easy #leetcode

Уродливое число — это положительное целое число, простые множители которого ограничены числами 2, 3 и 5.

Дано целое число n, верните true, если n является уродливым числом.

Пример:

Input: n = 6

Output: true

Explanation: 6 = 2 × 3

C# решение

сопоставлено/оригинал
public class Solution {
    public bool IsUgly(int n) {
        if (n <= 0) {
            return false;
        }
        foreach (int factor in new int[] {2, 3, 5}) {
            n = KeepDividingWhenDivisible(n, factor);
        }
        return n == 1;
    }
    private int KeepDividingWhenDivisible(int dividend, int divisor) {
        while (dividend % divisor == 0) {
            dividend /= divisor;
        }
        return dividend;
    }
}

C++ решение

auto-draft, проверить перед отправкой
#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 IsUgly(int n) {
        if (n <= 0) {
            return false;
        }
        foreach (int factor in new int[] {2, 3, 5}) {
            n = KeepDividingWhenDivisible(n, factor);
        }
        return n == 1;
    }
    private int KeepDividingWhenDivisible(int dividend, int divisor) {
        while (dividend % divisor == 0) {
            dividend /= divisor;
        }
        return dividend;
    }
}

Java решение

сопоставлено/оригинал
class Solution {
    public boolean isUgly(int n) {
        if (n <= 0) {
            return false;
        }
        for (int factor : new int[] {2, 3, 5}) {
            n = keepDividingWhenDivisible(n, factor);
        }
        return n == 1;
    }

    private int keepDividingWhenDivisible(int dividend, int divisor) {
        while (dividend % divisor == 0) {
            dividend /= divisor;
        }
        return dividend;
    }
}

JavaScript решение

сопоставлено/оригинал
class Solution {
    isUgly(n) {
        if (n <= 0) {
            return false
        }
        for (const factor of [2, 3, 5]) {
            n = this.keepDividingWhenDivisible(n, factor)
        }
        return n === 1
    }

    keepDividingWhenDivisible(dividend, divisor) {
        while (dividend % divisor === 0) {
            dividend /= divisor
        }
        return dividend
    }
}

Python решение

сопоставлено/оригинал
class Solution:
    def isUgly(self, n: int) -> bool:
        if n <= 0:
            return False
        for factor in [2, 3, 5]:
            n = self.keepDividingWhenDivisible(n, factor)
        return n == 1

    def keepDividingWhenDivisible(self, dividend: int, divisor: int) -> int:
        while dividend % divisor == 0:
            dividend //= divisor
        return dividend

Go решение

сопоставлено/оригинал
package main

func isUgly(n int) bool {
    if n <= 0 {
        return false
    }
    for _, factor := range []int{2, 3, 5} {
        n = keepDividingWhenDivisible(n, factor)
    }
    return n == 1
}

func keepDividingWhenDivisible(dividend, divisor int) int {
    for dividend%divisor == 0 {
        dividend /= divisor
    }
    return dividend
}

Algorithm

1️⃣

Если данное целое число n неположительное, верните false, так как неположительное число не может быть уродливым.

2️⃣

Определите функцию keepDividingWhenDivisible, которая принимает два аргумента: делимое и делитель. Эта функция будет делить делимое на делитель до тех пор, пока оно делится без остатка. Функция возвращает измененное делимое. Последовательно примените эту функцию к n с делителями 2, 3 и 5.

3️⃣

Если после всех делений n равно 1, верните true, иначе верните false.

😎

Вакансии для этой задачи

Показаны активные вакансии с пересечением по тегам задачи.

Все вакансии
Активных вакансий пока нет.