前言:(内容仅供分享和参考):
首先写之前要明白什么叫丑数:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但7、14不是,因为它们包含质因子7。 习惯上我们把1当做是第一个丑数。
========================================================================
题目:编写程序,定义函数isUgly,如果n是丑数,返回1,否则返回0。输如一个正整数n,调用isUgly函数,如果该正整数是丑数输出True,否则输出False。
编程代码:(用到的软件:Dev-C++)
#include<stdio.h>
void isUgly(){//定义函数isUgly//
long long n;
printf("请输入一个数以判断该数是否为丑数:");
scanf("%d",&n);
while(1)
{ while(n%2==0)
{ n/=2;}
while(n%3==0)
{ n/=3;}
while(n%5==0)
{ n/=5;}
if(n==1){printf("True");break;}
else {printf("False");break;}
}
}
int main()
{
isUgly();//调用函数//
return 0;
}
#include<stdio.h>
void isUgly(){//定义函数isUgly//
long long n;//定义大一点,不然等会范围不够//
printf("请输入一个数以判断该数是否为丑数:");
scanf("%d",&n);
while(1){
while(n%2==0)
{
n/=2;
}
while(n%3==0)
{
n/=3;
}
while(n%5==0)
{
n/=5;
}
if(n==1)
{printf("True");break;}//记得加上break终止循环//
else {printf("False");break;}
}
}
int main()
{
isUgly();//调用函数//
return 0;
}
========================================================================
结果图:
补充:所谓一个数m是另一个数n的因子,是指n能被m整除,也就是n % m == 0。根据丑数的定义,丑数只能被2、3和5整除。也就是说如果一个数如果它能被2整除,我们把它连续除以2;如果能被3整除,就连续除以3;如果能被5整除,就连续除以5。如果最后我们得到的是1,那么这个数就是丑数,否则不是。
最经典是算法是:
while(number % 2 == 0)
number /= 2;
while(number % 3 == 0)
number /= 3;
while(number % 5 == 0)
number /= 5;
return number == 1;