263. Ugly Number
题目文本会按所选界面语言从俄语翻译;代码保持不变。
Уродливое number — это положительное 整数, простые множители которого ограничены числами 2, 3 и 5.
given 整数 n, return true, если n является уродливым numberм.
示例:
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++ 解法
自动草稿,提交前请检查#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 неположительное, return false, так как неположительное number не может быть уродливым.
2️⃣
Определите функцию keepDividingWhenDivisible, которая принимает два аргумента: делимое и делитель. Эта функция будет делить делимое на делитель до тех пор, пока оно делится без остатка. Функция returns измененное делимое. Последовательно примените эту функцию к n с делителями 2, 3 и 5.
3️⃣
Если после всех делений n равно 1, return true, иначе return false.
😎
Vacancies for this task
活跃职位 with overlapping task tags are 已显示.
目前还没有活跃职位。