1 #题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
代码:
2 import pdb 3 tmp = int(input(‘请输入一个正整数:‘)) 4 print(‘%d=‘%tmp,end = ‘‘) 5 6 i = 2 7 li = [] 8 #pdb.set_trace() 9 while i > 1: 10 if tmp%i == 0: 11 tmp = tmp/i 12 li.append(i) 13 i = 1 14 if tmp == 1: 15 i = 0 16 i += 1 17 for x in li[:len(li)-1]: 18 print(‘%d*‘%x,end=‘‘) 19 print(li[-1]) ~
运行结果:
[[email protected] code_100]# python code_14.py 请输入一个正整数:1000 1000=2*2*2*5*5*5 [[email protected] code_100]# python code_14.py 请输入一个正整数:69873 69873=3*23291 [[email protected] code_100]# python code_14.py 请输入一个正整数:208628064 208628064=2*2*2*2*2*3*3*724403 [[email protected] code_100]# python code_14.py 请输入一个正整数:90 90=2*3*3*5 [[email protected] code_100]# python code_14.py 请输入一个正整数:879236872432 879236872432=2*2*2*2*17099*3213773 [[email protected] code_100]#
代码解释:
2 import pdb 3 tmp = int(input(‘请输入一个正整数:‘)) #接收输入数字,并转换成int模式 4 print(‘%d=‘%tmp,end = ‘‘) #格式化输出 5 6 i = 2 #求质数从2开始除 7 li = [] #定义一个空的列表 8 #pdb.set_trace() 9 while i > 1: #开启while循环 10 if tmp%i == 0: #这个数字从2开始做除法,如果余数为0说明,这个数就是tmp的质数 11 tmp = tmp/i #tmp相应的获取除以后的值 12 li.append(i) #将可以把tmp整除的数添加到列表li[] 13 i = 1 #当有一个数字可以整除tmp时,将i重置重新开始循环 14 if tmp == 1: #当tmp被除等于1时,说明tmp被除尽 15 i = 0 #通过赋值i=0,结束while循环 16 i += 1 #每次计算后,i+1,依次进行除法测试,从2开始向后除,能够取到的数字应该都是质数,比方说,在除以4之前,一定可以被2整除,所以不会出现被非质数进行除的情况 17 for x in li[:len(li)-1]: #遍历这个li列表的前n-1个数 18 print(‘%d*‘%x,end=‘‘) #格式化输出这n-1个数 19 print(li[-1]) #格式化输出li的最后一个数,最后三行代码主要是要达到题目中li列表所有元素相乘的格式 ~
时间: 2024-12-29 09:20:09