使用Python求解最小公倍数
2017-05-08 19:45
344 查看
简单分析了一下,最大公约数的求解方法跟最小公倍数的求解方法类似,只需要改一个简单的条件,然后做一点简单的其他计算。问题的解决也是基于分解质因式的程序。
程序实现以及测试case代码如下:
#!/usr/bin/python
from collections import Counter
def PrimeNum(num):
r_value =[]
for i inrange(2,num+1):
for jin range(2,i):
ifi % j == 0:
break
else:
r_value.append(i)
returnr_value
def PrimeFactorSolve(num,prime_list):
for n inprime_list:
ifnum % n == 0:
return[n,num / n]
def PrimeDivisor(num):
num_temp =num
prime_range= PrimeNum(num)
ret_value =[]
while numnot in prime_range:
factor_list= PrimeFactorSolve(num,prime_range)
ret_value.append(factor_list[0])
num =factor_list[1]
else:
ret_value.append(num)
returnCounter(ret_value)
def LeastCommonMultiple(num1,num2):
dict1 =PrimeDivisor(num1)
dict2 =PrimeDivisor(num2)
least_common_multiple= 1
for key indict1:
ifkey in dict2:
ifdict1[key] > dict2[key]:
least_common_multiple*= (key ** dict1[key])
else:
least_common_multiple*= (key ** dict2[key])
for key indict1:
ifkey not in dict2:
least_common_multiple*= (key ** dict1[key])
for key indict2:
ifkey not in dict1:
least_common_multiple*= (key ** dict2[key])
returnleast_common_multiple
print(LeastCommonMultiple(12,18))
print(LeastCommonMultiple(7,2))
print(LeastCommonMultiple(7,13))
print(LeastCommonMultiple(24,56))
print(LeastCommonMultiple(63,81))
程序执行结果:
E:\WorkSpace\01_编程语言\03_Python\math>pythonleast_common_multiple.py
36
14
91
168
567
通过验证,计算结果准确。
程序实现以及测试case代码如下:
#!/usr/bin/python
from collections import Counter
def PrimeNum(num):
r_value =[]
for i inrange(2,num+1):
for jin range(2,i):
ifi % j == 0:
break
else:
r_value.append(i)
returnr_value
def PrimeFactorSolve(num,prime_list):
for n inprime_list:
ifnum % n == 0:
return[n,num / n]
def PrimeDivisor(num):
num_temp =num
prime_range= PrimeNum(num)
ret_value =[]
while numnot in prime_range:
factor_list= PrimeFactorSolve(num,prime_range)
ret_value.append(factor_list[0])
num =factor_list[1]
else:
ret_value.append(num)
returnCounter(ret_value)
def LeastCommonMultiple(num1,num2):
dict1 =PrimeDivisor(num1)
dict2 =PrimeDivisor(num2)
least_common_multiple= 1
for key indict1:
ifkey in dict2:
ifdict1[key] > dict2[key]:
least_common_multiple*= (key ** dict1[key])
else:
least_common_multiple*= (key ** dict2[key])
for key indict1:
ifkey not in dict2:
least_common_multiple*= (key ** dict1[key])
for key indict2:
ifkey not in dict1:
least_common_multiple*= (key ** dict2[key])
returnleast_common_multiple
print(LeastCommonMultiple(12,18))
print(LeastCommonMultiple(7,2))
print(LeastCommonMultiple(7,13))
print(LeastCommonMultiple(24,56))
print(LeastCommonMultiple(63,81))
程序执行结果:
E:\WorkSpace\01_编程语言\03_Python\math>pythonleast_common_multiple.py
36
14
91
168
567
通过验证,计算结果准确。
相关文章推荐
- opencv 中,使用cvSolve函数,求解线性方程组,或者最小二乘法问题
- 使用MTL库求解最小二乘解
- 使用python求解特征值与特征向量
- Python知识(7)--最小二乘求解
- 使用牛顿迭代法求解一阶导数方程 python
- 程序员面试题精选(47):两个或N个数的最大公约数和最小公倍数的求解
- 使用Python求解最大公约数
- 使用Python scipy linprog 线性规划求最大值或最小值(使用Python学习数学建模笔记)
- 求解最小数字:暴力破解 外加 对字符串的使用
- 基于python语言:已知最大公约数与最小公倍数,反求符合条件的两个数
- 最小公倍数 分类: python 小练习 2013-12-02 11:19 263人阅读 评论(0) 收藏
- python使用分治法实现求解最大值的方法
- 使用matlab用优化后的梯度下降法求解达最小值时参数
- OJ--------最小公倍数+求解立方根
- 使用Python求解最大公约数的实现方法
- 使用MTL库求解最小二乘解
- 递归:最小公倍数和最大公约数求解
- 使用C语言实现最小生成树求解的简单方法
- 使用MATLAB和Python迭代求解黄金分割
- python:使用scipy求解常微分方程