Skip to content

【力扣】263. 丑数 来,和我上一节数学课吧~

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

春招打卡第20天第27篇。

勤学似春起之苗,不见其增,日有所长;辍学如磨刀之石,不见其损,日有所亏。

掘金的活动真多哇,这个月决定每天用go刷题,一方面提升一下算法水平,另一方面沉淀一下go语言的学习。

Let's GO!

题目描述

给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。

丑数 就是只包含质因数 2、3 和5 的正整数。

示例

示例 1:

输入:n = 6

输出:true

解释:6 = 2 × 3

示例 2:

输入:n = 8

输出:true

解释:8 = 2 × 2 × 2

示例 3:

输入:n = 14

输出:false

解释:14 不是丑数,因为它包含了另外一个质因数 7 。

示例 4:

输入:n = 1

输出:true

解释:1 通常被视为丑数。

提示:

−231-2^{31}−231 <= n <= 2312^{31}231 - 1

题目分析

来,我们上一节数学课,学学啥是丑数。

丑数 就是只包含质因数 2、3 和5 的正整数。

那什么又是质因数呢?

定义如下:

质因数(素因数或质因子)在数论里是指能整除给定正整数的质数。除了1以外,两个没有其他共同质因子的正整数称为互质。因为1没有质因子,1与任何正整数(包括1本身)都是互质。正整数的因数分解可将正整数表示为一连串的质因子相乘,质因子如重复可以用指数表示。根据算术基本定理,任何正整数皆有独一无二的质因子分解式。只有一个质因子的正整数为质数。

明白一点了,再看示例,恩,清晰很多了。

简单来说:

我把可以对输入的整数 n 反复除以 2,3,5,直到 n 不再包含质因数 2,3,5为止。

如果剩下的数等于 1,则说明 n 不包含其他质因数,就是丑数;

如果剩下的数不等于 1,说明 n 包含其他质因数,不是丑数。

思路讲解

  1. 根据丑数的定义我们可以知道0和负数一定不是丑数

  2. 循环遍历,将输入值n循环除以2、3、5,如果剩下的数为1,就是丑数

  3. 否则就不是丑数

AC代码

go
var factors = []int{2, 3, 5} func isUgly(n int) bool {     if n <= 0 {         return false     }     for _, f := range factors {         for n%f == 0 {             n /= f         }     }     return n == 1 }

运行结果

image.png

总结

丑数不丑,数学真奇妙。

来源说明

来源:力扣(LeetCode)

链接:leetcode-cn.com/problems/ug…

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

最后

感谢阅读,欢迎大家三连:点赞、收藏、投币(关注)!!!

8e95dac1fd0b2b1ff51c08757667c47a.gif

🚀 学习遇到瓶颈?想进大厂?

看完这篇技术文章,如果还是觉得不够系统,或者想在实战中快速提升?
王中阳的就业陪跑训练营,提供定制化学习路线 + 企业级实战项目 + 简历优化 + 模拟面试。

了解训练营详情