题目:
题解:
由题,我们知道丑数大于0,丑数都可以写成2*2*...*2*3*3...*3*5*5...*5,有了这个基础就很好写代码了。
用三个while循环将前面的2 3 5全部除掉如果这个数是丑数,最后n是等于1的,反之n不等于1。
bool isUgly(int n){if(n<=0){return false;}if(n==1){return true;}while(n%2==0){n/=2;}while(n%3==0){n/=3;}while(n%5==0){n/=5;}return n==1;
}
此外我们还可以写成递归:
bool isUgly(int n)
{if (n == 1)return 1;if (n == 0)return 0;if (n % 2 == 0)return isUgly(n / 2);if (n % 3 == 0)return isUgly(n / 3);if (n % 5 == 0)return isUgly(n / 5);return 0;
}
本期博客到这里就结束了,如果有什么错误,欢迎指出,如果对你有帮助,请点个赞,谢谢!