在codewars中,有一个质因数分解题:
Primes in numbers
https://www.codewars.com/kata/54d512e62a5e54c96200019e/train/python

code:
运行OUT Of Time

欢迎优化

def primeFactors(n):
    ...
    primelist = []
    for x in range(2,n):
        if prime(x) == True:
            primelist.append(x)
    print(primelist)
    #for y in enumerate(primelist):
        #print(y)
    dict = {}
    for p in primelist:
        dict[p] = 0
    print(dict)
    dict_cnt(dict,n)
    str = ''
    print(dict)
    for x in dict:
        if dict[x]> 1:
            #print(x)
            #print(type(x))
            str += '(%s**%s)' %(x,dict[x])
        elif dict[x] == 1:
            str += '(%s)' % (x)
    print(str)
    return str

def prime(n):
    for i in range(2,n):
        if n % i == 0:
            return False
    else:
        return True


def dict_cnt(dict,n):
    for k in dict:
        #print(k)
        if n % k == 0:
            dict[k] += 1
            return dict_cnt(dict, n / k)
    return dict

primeFactors(7775460)

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐