问题描述
有一些正整数,如果这个正整数分解质因数之后,只包含2或3或5,那么该数即为“丑数”,比如100就是“丑数”,100分解质因数之后只包含2和5;14就不是“丑数”,因为14分解质因数之后,包含了7.
输入正整数n,请写程序判断n是否是“丑数”,是“丑数”则输出“yes”,否则输出“no”。
输入格式
一个正整数n
输出格式
一个字符串yes 或no
样例输入
15
样例输出
yes
样例输入
242
样例输出
no
数据规模和约定
n不超过C语言整型范围
思路:
只需要用n不断地和2,3,5取模判断,当满足任取模结果不为0时,除以对应的数就可以了。
注意:1可能要单独考虑一下哦。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,flag=0;//flag用来判断输出结果。
cin>>n;
if(n==1) flag=1;//单独判断n为1时。
while(n!=1)
{
if(n%2==0) n/=2;
else if(n%3==0) n/=3;
else if(n%5==0) n/=5;
else
{
flag=1;//当n分别和2,3,5取模结果都不为1时,那么n就一定不是丑数,直接改flag为1跳出循环即可。
break;
}
}
if(flag==0) cout<<"yes";//flag为0代表n为丑数。
else cout<<"no";
}