【LeetCode-263】Ugly Number(C++)
2016-01-16 21:15
393 查看
题目要求:写程序判断给出的数是不是ugly number。
Ugly number是一个质因数只包含2,3,5的正整数。比如6和8均是ugly number,而14不是ugly number,因为其质因子包含7。
注意:1通常被认为是ugly number。
解题思路:首先要了解什么是质因数,质因数是指能整除给定正整数的质数。听起来特别难理解,但是仔细想一下小学的时候学过的用短除法分解质因数的过程就应该好理解了, 对正整数n分解质因数的过程就是找到一连串的质数,这些质数乘起来可以得到n。所以本题里面的ugly number就是这样的数:如果n是ugly number,则n可以只由若 干个2,若干个3和若干个5相乘得到。
程序实现:class Solution {
public:
bool isUgly(int num) {
if(num<=0)
return 0;
while(num%2 == 0){
num=num/2;
}
while(num%3==0){
num=num/3;
}
while(num%5==0){
num=num/5;
}
if(num==1)
return 1;
else
return 0;
}
};总结:这道题AC的太顺利了,第一次提交的时候忘记加num>0的约束了,所以提示当输入为0的时候超时。然后加了一个if条件句就AC了!开心
Ugly number是一个质因数只包含2,3,5的正整数。比如6和8均是ugly number,而14不是ugly number,因为其质因子包含7。
注意:1通常被认为是ugly number。
解题思路:首先要了解什么是质因数,质因数是指能整除给定正整数的质数。听起来特别难理解,但是仔细想一下小学的时候学过的用短除法分解质因数的过程就应该好理解了, 对正整数n分解质因数的过程就是找到一连串的质数,这些质数乘起来可以得到n。所以本题里面的ugly number就是这样的数:如果n是ugly number,则n可以只由若 干个2,若干个3和若干个5相乘得到。
程序实现:class Solution {
public:
bool isUgly(int num) {
if(num<=0)
return 0;
while(num%2 == 0){
num=num/2;
}
while(num%3==0){
num=num/3;
}
while(num%5==0){
num=num/5;
}
if(num==1)
return 1;
else
return 0;
}
};总结:这道题AC的太顺利了,第一次提交的时候忘记加num>0的约束了,所以提示当输入为0的时候超时。然后加了一个if条件句就AC了!开心
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C++联合体转换成C#结构的实现方法
- C#实现的算24点游戏算法实例分析
- C++高级程序员成长之路
- C++编写简单的打靶游戏