|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 rocyjp 于 2016-11-21 22:55 编辑
'''题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
- def reduceNum(n):
- print ('{} = '.format(n),end='') # 使用 format 函数格式化字符串
- if not isinstance(n, int) or n <= 0 : #如果 n的类型不是整数或者不是正数
- print ('请输入一个正确的数字 !')
- exit(0) #无错误退出程序
- elif n in [1] :
- print ('{}'.format(n))[/color]
- while n not in [1] : # 循环保证递归
- for index in range(2, n + 1) :
- if n % index == 0:
- n //= index # n 等于 n/index
- if n == 1:
- print (index)
- else : # index 一定是素数
- print ('{} *'.format(index),end='')
- break
- reduceNum(101)
- reduceNum(100)
复制代码
问题, n in [1], 这里的 [1]是什么用法?跟 fomat 有关系吗? 不应该是【0】吗? |
|