码迷,mamicode.com
首页 > 编程语言 > 详细

[算法]分解因数

时间:2017-09-17 00:27:08      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:parse   als   res   end   col   算法   join   mat   print   

将101到200间的数分解因数

log = {}

def prime_log(num):
    if num < 3:
        return 0
    flags = [True] * num 
    flags[0], flags[1] = False, False
    for i in range(2, int(num**0.5+1)):
        if flags[i]:
            flags[i*i:num:i] = [False]*len(flags[i*i:num:i])
    return flags

primes = prime_log(201)
# print primes

def parse_int(num):
    if num in log:
        return log[num]
    if primes[num]:
        log[num] = [num]
        return [num]
    res = []
    for i in range(2, num/2+1):
        if not num%i:
            if primes[i]:
                res.append(i)
                e = log[num/i] if num/i in log and len(log[num/i]) else parse_int(num/i)
                for j in e:
                    res.append(j)
                break
    for i in res:
        if num in log:
            log[num].append(i)
        else:
            log[num] = []
            log[num].append(i)
    return res



def main():
    for i in range(101, 200):
        parse_int(i)
        if not len(log[i]):
            print str(i)+={}\n.format(i)
        else:
            print *.join(map(str, log[i]))+={}\n.format(i)

if __name__ == __main__:
    main()

# print parse_int(108)
# # print log
            



                

 

[算法]分解因数

标签:parse   als   res   end   col   算法   join   mat   print   

原文地址:http://www.cnblogs.com/fcyworld/p/7533474.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!