python 3.6 将一个正整数分解质因数
#14.题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
###写一个函数,用来判断是否是素数
def isPrimeNumber(b):
count = 0
for i in range(2,b):
if b%i==0:
count=count+1
if count==0:
return True #print(b,"是素数") 是素数返回 True
else:
return False #print(b,"不是素数") 不是素数返回 False
def fix(x):
list=[] #先设置一个空格列表 ,用来放 质因数
y=x #设置一个中间变量,y,每次需要对y 进行循环求解质因数,一旦
flag=1
while flag==1:
for i in range(2,y):
if y%i==0:
if isPrimeNumber(i) is True and isPrimeNumber(y//i) is False:
list.append(i)
y=y//i #更新y的值,重新发起求解质因数
break #结束本次 for循环,判断是否从whilec重新开始,重新进入for循环,从i=2重新开始
if isPrimeNumber(i) is True and isPrimeNumber(y//i) is True:
list.append(i)
list.append(y//i)
flag = 0 #flag=0 可以退出 while循环
break #结束本次 for循环,判断是否重新进入while循环
return list #最终将存放所有质因子的list返回
asd=int(input("请输入一个正整数:"))
if isPrimeNumber(asd) is True: #判断是否是素数
print( asd,"=",1,"*",asd)
if isPrimeNumber(asd) is False:#判断是否是素数
xlist=fix(asd)
print(asd,'= ',end="") #以2=2*2的格式输出
for i in range(len(xlist)):
print(xlist[i],end="")
if i==(len(xlist)-1):
continue
print (end="*")
##这个写法,参考别人的,感觉不错哦,代码量很少 while 1: n = int(input('请输入一个整数:')) print('%d='%n,end='') while n>1: for i in range(2,n+1): if n%i==0: n=int(n/i) if n==1: print('%d'%i,end='') else: print('%d*'%i,end='') break print()