c++代码判断给定数字是否为丑数

题目描述

只包含因子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
  1. 此算法实质上是使用代码逻辑还原了质因数分解的全过程。当给定数字num取余2、3、5与0相等,那么表示num的因子一定包含2、3、5。
  2. 使用num除以2、3、5则可以表示为分解出一个因子,以此类推,当num==1时,表示给定数字的因子只包含2、3、5,根据定义即可得知这个数为丑数。
#include 
using namespace std;

bool isUgly(int num) {
	/*当num包含因数2时,取余结果必定为0;num/2相当于分解出一个因数:2。
	以此类推,当num==1时,表示给定数字的因子只包含2、3、5,根据定义即可得知这个数为丑数*/
	while (num % 2 == 0)
		num /= 2;
	while (num % 3 == 0)
		num /= 3;
	while (num % 5 == 0)
		num /= 5;
	return num == 1 ? true : false;
}

int main() {
	int num;
	/*如果需要输入时不受回车影响,可以使用数组保存用户输入的数字*/
	while (true) {
		cin >> num;
		if (!num) {
			break;
		}
		cout << (isUgly(num) ? "True" : "False") << "\n";
	}
	system("pause");
	return 0;
}

 

 

 

 

 

 

你可能感兴趣的:(代码题,c++)