丑数
丑数
题目描述
只包含因子2,3,5的正整数被称作丑数,比如4,10,12都是丑数,而7,23,111则不是丑数,另外1也不是丑数。请编写一个函数,输入一个整数n,能够判断该整数是否为丑数,如果是,则输出True,否则输出False。
输入描述每行输入一个正整数 n
1 <= n<= 1000000
输出描述对于每一行输入,输出其是否为丑数,是则输出True,否则输出False
样例输入4 7 12样例输出
True False True
递归,用2、3或者5除以整数 n,然后再进行判断,不断递归,直到返回一个布尔型的结果。
C++代码如下:
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 bool ugly(unsigned n) { 5 if (n == 1) return false; 6 else if (n == 2 || n == 3 || n == 5) return true; 7 if (n % 2 == 0) ugly(n/=2); 8 else if (n % 3 == 0) ugly(n/=3); 9 else if (n % 5 == 0) ugly(n/=5); 10 else return false; 11 } 12 13 int main() { 14 unsigned n; 15 cin >> n; 16 if (ugly(n)) cout << "True"<<endl; 17 else cout << "False" << endl; 18 return 0; 19 }