标签:range 参数 输入 使用 一个 turn 无法 shu 分解质因数
方法一:对每个因式判断是否是质数,不是继续分解,是则记录
"""
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
思路:
质因数为此整数的因数并且这个因数是质数
将整数分解因数,判断因数是否为质数,若是质数则存入列表,将另一个因数继续分解,直到无法再分解
将因数列表判断是否为质数,若为质数则存入新列表,则继续分解因数
最后使用“*”拼接
"""
# 判断是否为质数
def zhishu(num):
for i in range(2,int( num**(1/2))+1):
if num%i == 0:
return False
#python特有可以对for进行else操作
else:
return True
# 分解质因数
def fenjiezhiyinshu(num):
tem = []
if zhishu(num):
print("%d是质数,请输入其他数字"%num)
return 0
else:
while num: #控制循环次数用num=0控制结束
if zhishu(num) and num !=1: #判断最后分解的因数是否是质数,若最后的是质数且不为1(1没有意义)则结束
tem.append(num)
num =0
else:
for i in range(2, int(num**(1/2))+1): #逐步分解因式控制取值次数
#获取因数,判断是否为质数并且存入列表
if num%i ==0 and zhishu(i):
tem.append(i)
num = num//i #获取除i的另一个因子
break
# print(tem)
return tem
#格式化输出
def gongshi(*lstp):#接收后参数为tuple类型需要取出列表使用
lst=lstp[0]
st = str(lst[0])
for i in range(1,len(lst)):
stt = ‘*‘ + str(lst[i])
st += stt
return st
num = int(input("请输入一个整数\n"))
zhi = fenjiezhiyinshu(num)
if zhi !=0:
gs = gongshi(fenjiezhiyinshu(num))
print("%d = %s"%(num,gs))
方法二:通过方法一代码发现,由于取第一因数时都是从1开始的逐渐递增,并且分解过程中发现因数不是质数但是会被小于此因数的质数整除。因此只要获取所循环的因数就可以了
"""
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
思路2:
分解质因数是发现每次分解是第一个因子就是质因子。每次列表保存第一个因子就可以了
将列表格式化
"""
def fenjiezhiyinzi(num):
print(type(num))
tem = []
for i in range(2,num//2+1):# 控制长度,为确保取值为整数使用//整除
for j in range(2,num): # 去做除法运算
if num%j==0:
tem.append(j)
num = num//j
break
if len(tem)==0:
print("您输入的是质数,请输入其他数")
return 0
else:
return tem
def gongshi(*lstp):
lst = lstp[0]
st = str(lst[0])
for i in range(1,len(lst)):
stt = ‘*‘ + str(lst[i])
st += stt
return st
num = int(input("请输入一个整数\n"))
zhi = fenjiezhiyinzi(num)
if zhi != 0:
gs = gongshi(zhi)
print("%d = %s"%(num,gs))
标签:range 参数 输入 使用 一个 turn 无法 shu 分解质因数
原文地址:https://www.cnblogs.com/hjhlg/p/12937939.html