求解两个整数(不能是负数)的最大公约数(要求两数不能同时为0)

当两数都是0时,最大公约数为0

方式一:穷举法
 def GCU(m, n):
if not m:
return n
elif not n:
return m
elif m is n:
return m if m > n:
gcd = n
else:
gcd = m while m%gcd or n%gcd:
gcd -= 1 return gcd

方式二:相减法

 def GCU(m, n):
if not m:
return n
elif not n:
return m
elif m is n:
return m while m!=n:
if m>n:
m -= n
else:
n -= m return m

方式三:欧几里德辗转相除法

 def GCU(m, n):
if not m:
return n
elif not n:
return m
elif m is n:
return m while m%n:
m, n = n, m%n return n

方式四:欧几里德辗转相除法 递归实现

 def GCU(m,n):
if not n:
return m
else:
return GCU(n, m%n) if __name__ == '__main__':
a = int(input('Please input the first integers : '))
b = int(input('Please input the second integers : '))
result = GCU(a, b)
print('GCU = ', result)

python 最大公约数的更多相关文章

  1. Python 最大公约数的欧几里得算法及Stein算法

    greatest common divisor(最大公约数) 1.欧几里得算法 欧几里德算法又称辗转相除法,用于计算两个正整数a,b的最大公约数. 其计算原理依赖于下面的定理: 两个整数的最大公约数等 ...

  2. Python - 最大公约数算法

    # Python 3.6 # 最大公约数,最大公因子 # Greatest Common Divisor # 辗转相除法 def gcd(num1: object, num2: object) -&g ...

  3. python 最大公约数 最小公倍数

    def gongyueshu(m,n): if m<n: m,n=n,m elif m==n: return m if m/n==int(m/n): return n else: for i i ...

  4. Python代码样例列表

    扫描左上角二维码,关注公众账号 数字货币量化投资,回复“1279”,获取以下600个Python经典例子源码 ├─algorithm│       Python用户推荐系统曼哈顿算法实现.py│    ...

  5. python024 Python3 实例

    Python3 实例 以下实例在 Python3.4.3 版本下测试通过: Python Hello World 实例 Python 数字求和 Python 平方根 Python 二次方程 Pytho ...

  6. Python3 实例

    一直以来,总想写些什么,但不知从何处落笔. 今儿个仓促,也不知道怎么写,就把手里练习过的例子,整理了一下. 希望对初学者有用,都是非常基础的例子,很适合初练. 好了,Follow me. 一.Pyth ...

  7. 算法:欧几里得求最大公约数(python版)

    #欧几里得求最大公约数 #!/usr/bin/env python #coding -*- utf:8 -*- #iteration def gcd(a,b): if b==0: return a e ...

  8. python实现求最大公约数与最小公倍数

    记录python实现最大公约数&最小公位数两种算法 概念 最大公约数:指两个或多个整数共有约数中最大的一个 最小公倍数:两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就 ...

  9. 从错误中学python(4)——最小公约数与辗转相除法

    题目 给你两个正整数a和b, 输出它们的最大公约数 辗转相除法 辗转相除法的步骤 def gcd(b,a): b,a=a,b%a if a==0: return b else: return gcd( ...

随机推荐

  1. shell面试题目总结

    1.如何理解shell脚本中第一行#!/bin/sh #!为特殊的表示符,其后是解释此脚本的shell的路径.此脚本使用/bin/sh进行解释执行. 2.如何向脚本传递参数. 脚本名字 参数1 参数2 ...

  2. 使用CTE减少统计子查询

    Set Statistics IO ON SET STATISTICS TIME ON --/*--原来语句 DECLARE @CkNo nvarchar(4000),@ProWarn int,@Sk ...

  3. Spring操作指南-针对JDBC配置声明式事务管理(基于注解)

  4. Git过滤文件和文夹

    今天是2016年10月份的最后一天,感觉时间过得真的是飞快呢,此刻天下着小雨,天气灰蒙如天每个人的心情一样.在此把这个月的项目上传到git上,就需要过滤一些项目自动生成的不必要的文件,如:bin,ob ...

  5. maven exclusion 解决maven传递依赖中的版本冲突

    传递依赖是maven最有特色的.最为方便的优点之一,可以省了很多配置.如a 依赖 b,b 依赖c 默认 a也会依赖 c.但是也会带来隐患,如版本冲突.当然maven也考虑到解决办法,可以使用exclu ...

  6. EasyUI的使用

    EasyUI包含有很多“UI控件”,实现了网页中常见的(或者是一些模拟桌面的)效果,这样我们就不用“重新造轮子”了,只要掌握了这些控件的用法,就可以容易的在网页上实现这些效果了. 所以,接下来的问题就 ...

  7. PRML读书笔记——3 Linear Models for Regression

    Linear Basis Function Models 线性模型的一个关键属性是它是参数的一个线性函数,形式如下: w是参数,x可以是原始的数据,也可以是关于原始数据的一个函数值,这个函数就叫bas ...

  8. VMware 12 CentOS Minimal 安装VMwareTools 找不到头文件kernelheaders

    输入命令: yum install kernel-headers 安装vmware-tools时提示需要kernel headers 输入命令: yum install kernel-devel

  9. 常用的Linux命令

    1.如何创建一个目录?mkdir DirectoryName 2.如何进入服务器根目录?ls / 3.如何查看日历?cal 4.如何修改密码?passwd 5.如何查看当前用户信息?whoami 6. ...

  10. (二)ADS1.2的安装教程以及使用 调试 (不会 AXD 调试工具)

    安装教程: 参考百度 http://jingyan.baidu.com/article/cdddd41c7db85253cb00e1ae.html 具体使用看: 杨铸的那本书(嵌入式底层软件驱动开发) ...