求多个数的最小公倍数,个数最小公倍数,import math"
文章由Byrx.net分享于2019-03-23 09:03:23
求多个数的最小公倍数,个数最小公倍数,import math"
import math""" 获得多个数的最小公倍数 isPrime(n) getMutiPrime(n) getLeastCommonMutible(numList)"""def isPrime(n): """ 判断一个数是否是质数 """ if n==2: return True if n==1 or n%2==0: return False p = int(math.sqrt(n))+1 i = 3 while i<p: if n%i==0: return False i+=2 return Truedef getMutiPrime(n): """get muti num of n n=num1*num2...*numx for num1...numx are all prime numbers 将数n进行质因数分解 prime factorization """ if n==2: resultlist = [2] else: list1 = [i for i in range(2,int(math.sqrt(n))+1) if isPrime(i)] #print(list1) resultlist=[] tmp = n while not isPrime(tmp) and tmp!=1: for i in list1: if tmp%i==0: resultlist.append(i) tmp=tmp//i #print(tmp) #print(resultlist) if tmp!=1: resultlist.append(tmp) return resultlistdef isMutillistFill(mutilLsit): """ 判断一个二维列表中的每一个列表是否都为空 mutilLsit=[[],[],[]] 返回False mutilLsit=[[1],[],[]] 返回True""" for row in mutilLsit: if len(row)>0: return True return Falsedef getLeastCommonMutible(numList): """ numList 待求数的列表, 返回它们的最小公倍数的质因数列表 """ primelists=[] set1=set({}) mutilResult = [] for i in numList: primelists.append(getMutiPrime(i)) set1.update(set(i1 for i1 in getMutiPrime(i))) #print(primelists) flag = True flag1 = False while flag: for i in set1: for row in primelists: if i in row: row.remove(i) flag1 = True if flag1: mutilResult.append(i) flag1 = False flag = isMutillistFill(primelists) #print(mutilResult) return mutilResultdef getMutil(numList): result = 1 for i in numList: result*=i return resultif __name__=='__main__': print(getMutil(getLeastCommonMutible([8,12,20])))#获取8,12,20的最小公倍数 print(getMutil(getLeastCommonMutible([i for i in range(2,21)])))#获取1到20的所有数的最小公倍数#该片段来自于http://byrx.net
相关内容
- code golf--打印数字菱形,codegolf--,s=str(111111
- Python 秒杀“Ruby 太慢了”问题,pythonruby,感觉程序员是
- 一个论坛自动灌水机的例子,论坛灌水机例子,python初学
- python通过wxPython打开一个音频文件并播放的代码,pyth
- Fair and Square,fairandsquare,时间:1e14(18s左
- python 多线程实例,python多线程,# _*_ coding
- hyper超运算,让计算机死了吧,hyper死了,def hyper(n,
- 使用Python写一个贪吃蛇AI,python贪吃蛇ai,不久前在网上
- 使用reportlab生成中文表格pdf,reportlabpdf,导师的一个需求
- 将n*n的矩阵顺时针旋转90°,矩阵顺时针90,def rotate(l
评论关闭