力扣263:丑数【C++】

题目分析

原题:丑数是只包含质因数 2、3 或 5 的正整数。给定一个整数n,请你判断n是否为丑数,如果是返回 true,否则返回 false。

今天的LeetCode每日一题,从代码角度来说比较容易,重要的是从数学角度提炼题目的精髓,其实有点像脑筋急转弯的感觉。

思路分析

首先,丑数的定义中规定了丑数是正整数。而输入的是整数n,不一定是正还是负,抑或是0。因此需先判断整数n的正负,若为0或负数,直接返回false。

再者,丑数中只包含了2、3或5这三个因数。那么,我们可以把输入整数n中的2、3、5都除掉。若n为丑数,则此时n应该为1;否则就不是丑数。

关于除的先后顺序,这个并不会影响结果,因为乘法有交换律的原则,除的先后顺序并不会改变其中某一种质因数的个数。

代码实现

class Solution {
public:
    bool isUgly(int n) {
        if(n<=0){//先判断n是否为0或负,若为0或负直接返回false
            return false;
        }
        while(n%2==0){//将所有的2除干净
            n/=2;
        }
        while(n%3==0){//将所有的3除干净
            n/=3;
        }
        while(n%5==0){//将所有的5除干净
            n/=5;
        }
        return n==1;//若此时n为1则说明为丑数,返回true;不然返回false
    }
};
  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

The Gao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值