本文实例讲述了Python基于递归和非递归算法求两个数最大公约数、最小公倍数。分享给大家供大家参考,具体如下:
最大公约数和最小公倍数的概念大家都很熟悉了,在这里就不多说了,今天这个是因为做题的时候遇到了所以就写下来作为记录,也希望帮到别人,下面是代码:
#!/usr/bin/env python
#coding:utf-8
from fractions import gcd
#非递归实现
def gcd_test_one(a, b):
if a!=0 and b!=0:
if a
本文实例讲述了Python自定义函数实现求两个数最大公约数、最小公倍数。分享给大家供大家参考,具体如下:
1. 求最小公倍数的算法:
最小公倍数 = 两个整数的乘积 / 最大公约数
所以我们首先要求出两个整数的最大公约数, 求两个数的最大公约数思路如下:
2. 求最大公约数算法:
① 整数A对整数B进行取整, 余数用整数C来表示 举例: C = A % B
② 如果C等于0,则C就是整数A和整数B的最大公约数
③ 如果C不等于0, 将B赋值给A, 将C赋值给B ,然后进行 1, 2
本文实例讲述了Python实现的求解最小公倍数算法。分享给大家供大家参考,具体如下:
简单分析了一下,前面介绍的最大公约数的求解方法跟最小公倍数求解方法类似,只需要改一个简单的条件,然后做一点简单的其他计算。问题的解决也是基于分解质因式的程序。
程序实现以及测试case代码如下:
#!/usr/bin/python
from collections import Counter
def PrimeNum(num):
r_value =[]
for i in range(2,num+1)
本文实例讲述了Python基于辗转相除法求解最大公约数的方法。分享给大家供大家参考,具体如下:
之前总结过一次高德纳TAOCP中的最大公约数求解,其实课后题中的算法修改要求实现的是辗转相除法求解最大公约数。
这个题目我最初的理解理解错了,自然也没有做出标准答案。现在按照标准答案的解答写一下相应的代码实现:
# -*- coding:utf-8 -*-
#! python2
def MaxCommDivisor(m,n):
while m * n != 0:
m = m % n
我先用求三个整数的最大公约数为例。
首先利用for循环来进行判断这三个整数可以被那些数整除
代码如下:
x,y,z=eval(input(请输入三个整数(用逗号隔开):))
ma=max(x,y,z)
ls=[]
for i in range(2,ma):
a=x%i
b=y%i
c=z%i
接下来一步则是将相同的i值放到列表ls中。
代码如下:(if语句要在for循环下运行)
if a==0 and b==0 and c==0:
ls.app