本文讲述了python基础编程100例:第28期-丑数!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:
第28期-丑数
1 问题描述
把只包含质因子2,3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但7、14不是,因为它们包含质因子7。 习惯上我们把1当做是第一个丑数。 要求:输入一个数,判断是否是丑数 或者输出某一范围内的所有丑数
2 解题思路
由于因子只能是2,3,5这三个特殊数字,所以可以把这三个数字做成列表进行判断
遍历小于该数的除了1以外的最小因子,判断其是否在2,3,5之间
若不在内部可以直接输出其不是丑数
若是2,3,5之一,则可以使用剩下的数,再次判断其最小因子,直至数变成2,3,5后,可确定其是丑数,循环
3 解题方法
a = [2, 3, 5]
def UglyNumber(m):
n = m
while True:
if n == 1:
return f'{m}是丑数'
break
elif n in a:
return f'{m}是丑数'
break
else:
b = 0
for i in a:
if n % i != 0:
b += 1
else:
n /= i
continue
if b == 3:
return f'{m}不是丑数'
break
m = int(input('请输入整数:'))
print(UglyNumber(m))
第1行: 将三个特殊数字2,3,5建立成一个列表
第3行: 创建丑数函数UglyNumber,并输入m作为它的变量
第4行: 使用n来替代m的值,n用于变化,m用于表示原数
第6-11行: 判断n是否为1,2,3,5之间的一个,若是,打印m是完数且结束循环
第12-13行: 若n不是1,2,3,5之间的一个,定义b=0,用处稍后介绍
第14-16行: 使用for循环遍历2,3,5这三个数,判断2,3,5是否是其因数,若不是,b的值加一
第17-19行: 只要2,3,5之间有一个数为n的因数,则替换n为n除以因数之后的值,并使用continue结束本次循环,进行下次循环判断n是否是丑数
第20-22行: 如果b=3,则表示2,3,5之间任何一个数都不是n的因子,则n不是丑数,那么m也不是丑数
第25-26行: 输入一个整数并将其值返回给m,打印其是否是丑数
代码运行结果为:
更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。
想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!