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()