第45期-999除法
1 问题描述
输入一个奇数,然后判断最少几个 9 除于该数的结果为整数。
2 解题思路
- 第一步: 首先输入一个数,input函数
- 第二步: 判断该数是否为奇数
- 第三步: 用无限循环,从一个九开始除以刚刚的奇数求余
- 第四步: 若余不为0则不能整除,增加九的数量
- 第五步: 注意:5的倍数无法被9的倍数整除,会陷入无限循环
3 解题方法
n = int(input('请输入一个奇数:')) def b(): global n if n%2==0: n = int(input('您输入的不是奇数,请输入一个奇数:')) return b() if n%5==0: n = int(input('无解,请重新输入:')) return b() else: return c(n) def c(n): x = 10 while True: if (x - 1) % n == 0: print(f'至少{len(str(x-1))}个9除以{n}的结果为整数') break else: x *= 10 b()
第1行: 使用input函数提醒用户输入一个奇数并转化为整数类型赋值给n
第2行: 创建函数b()用于判断是否是奇数或者是5的倍数
第3行: 引入全局变量n
第4-5行: 若输入的是偶数,提醒用户重新输入一个奇数并转化为整数类型赋值给n
第6行: 重新用函数b()判断是否是奇数或者是5的倍数
第7-8行: 若输入的是5的倍数,提醒用户重新输入一个奇数并转化为整数类型赋值给n
第9行: 重新用函数b()判断是否是奇数或者是5的倍数
第10行: 其他情况下输入的便都是满足题意的奇数了,使用c(n)函数进行解题
第11行: 创建函数c()用于判断多少个九是输入的数的倍数,输入的数n作为自变量
第12行: 由于9、99、999等都可以看作是10-1、100-1、1000-1,所以可以使用10来作为初始数
第13、17-18行: 无限循环直到找到可以整除的9的倍数为止
第14-16行: 如果是可以整除的9的倍数,打印结果并结束循环
第19行: 使用b()函数来进行判断
代码运行结果为: