最大公约数
2016-07-14 00:00
302 查看
问题描述:
求任意两个整数的最大公约数。
我的代码:
我的思路:
我是按照更相减损法算的。
首先如果是44和22等这类的,那么最大公约数就是最小的22了,然后直接退出程序就行了,不必在算了;
如果是其他的,不论是一个奇数和一个偶数,还是两个奇数或偶数(不能整除),如果m-n大于n,那么将m-n的值给m,否则互换,保证最大的数永远给m,最小的数永远给n,这样以后就不需要在判断谁大了,只进行m-n操作即可。最后在每一次比较操作后判断,m-n的值和n值是否相等,如果相等,那m-n就是两数的最大公约数了;
示例代码:
示例采用的是辗转相除法,和更相减损法类似,只不过一个是除一个是减;
程序的第一个if语句也是将最大值给m最小值给n,然后让其辗转相除,将每次除的余数给n,原来的n值给m,直到n为0时,说明除到最后了,此时的m值就是两数的最大公约数;
总结:
1.更相减损法
更相减损术则以减数与差相等而得到,辗转相除法体现结果是以相除余数为0则得到;
以27和18为例:
m n m-n
27 18 9
18 9 9
9=9,因此9是27和18的最大公约数;
2.辗转相除法
先求出任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数;
以27和18为例:
m n m%n
27 18 9
18 9 0
9 0
n=0,因此9是27和18的最大公约数
3.如果两个自然数是互质数,那么它们的最大公约数是1;
如果两个自然数中,较大数是较小数的倍数,那么较小数就是这两个数的最大公约数;
题目出处:http://www.cheemoedu.com/exercise/36
求任意两个整数的最大公约数。
我的代码:
import sys m=int(raw_input("please input the first number: ")) n=int(raw_input("please input the second number: ")) m,n=max(m,n),min(m,n) if m%n==0: print "greatest common divisor is:", n sys.exit(1) while True: if m-n>n: m=m-n else: m,n=n,m-n if m-n==n: print "greatest common divisor is:" ,(m-n) break
我的思路:
我是按照更相减损法算的。
首先如果是44和22等这类的,那么最大公约数就是最小的22了,然后直接退出程序就行了,不必在算了;
如果是其他的,不论是一个奇数和一个偶数,还是两个奇数或偶数(不能整除),如果m-n大于n,那么将m-n的值给m,否则互换,保证最大的数永远给m,最小的数永远给n,这样以后就不需要在判断谁大了,只进行m-n操作即可。最后在每一次比较操作后判断,m-n的值和n值是否相等,如果相等,那m-n就是两数的最大公约数了;
示例代码:
def fun(m, n): if n > m: m, n = n, m while True: m, n = n, m % n if n == 0: break return m print fun(27,18)
示例采用的是辗转相除法,和更相减损法类似,只不过一个是除一个是减;
程序的第一个if语句也是将最大值给m最小值给n,然后让其辗转相除,将每次除的余数给n,原来的n值给m,直到n为0时,说明除到最后了,此时的m值就是两数的最大公约数;
总结:
1.更相减损法
更相减损术则以减数与差相等而得到,辗转相除法体现结果是以相除余数为0则得到;
以27和18为例:
m n m-n
27 18 9
18 9 9
9=9,因此9是27和18的最大公约数;
2.辗转相除法
先求出任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数;
以27和18为例:
m n m%n
27 18 9
18 9 0
9 0
n=0,因此9是27和18的最大公约数
3.如果两个自然数是互质数,那么它们的最大公约数是1;
如果两个自然数中,较大数是较小数的倍数,那么较小数就是这两个数的最大公约数;
题目出处:http://www.cheemoedu.com/exercise/36
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法