丑数的定义按照百度百科说法一定义如下:
说法一(ugly number):把只包含质因子2,3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但7、14不是,因为它们包含质因子7。 习惯上我们把1当做是第一个丑数。
程序要求:判断用户输入的数字是否为丑数?
分析过程:
a,如果用户输入的数字为n, 判断n和5的余数是否为0,如果余数等于0,则将n/5的值给n,继续判断n和5的余数是否为0,直到,余数不为0为止;
b、当a步骤中得到n的值后,再用n和3进行取余,判断余数是否为0,如果余数等于0,则将n = n/3。直到余数不为0;
c、当b步骤中得到n的值后,再用n和2进行取余,判断余数是否为0,如果余数等于0,则将n=n/2。直到余数不为0;
d、判断最后n的值是否等于1,如果等于1表示是丑数,否则不是丑数。
代码如下:
public class UglyNumber {
public static void main(String[] args) {
System.out.println("请输入一个正整数:");
while ( true ){
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
if ( number == -1){
break;
}
if (isUgly( number) ){
System.out.println(number+ " 是一个丑数" );
}else {
System.out.println(number+ " 不是一个丑数" );
}
}
}
public static boolean isUgly(int number){
if ( number <=0 ) {
return false;
}
if ( number == 1 )
return true;
while (number % 5==0){
number/=5;
}
while (number%3 == 0 ){
number/=3;
}
while ( number %2 == 0){
number>>=1;
}
return number == 1;
}
}