#coding:utf-8

importtime#辗转相除法:

defcommonDivisor1(num1,num2):if num1

temp=num1

num1=num2

num2=tempif num1%num2 ==0:returnnum2else:

num2= num1%num2returncommonDivisor1(num1,num2)#更相减损法

defcommonDivisor2(num1,num2):if num1==num2:returnnum1elif num1

temp=num1

num1=num2

num2=tempif num1 - num2 ==num2:returnnum2else:

temp=num1

num1=num2

num2= temp -num2#print (num1,' ', num2)

returncommonDivisor2(num1,num2)#分解质因数,之后求解

defcommonDivisor3(num1,num2):if num1==num2:returnnum1elif num1

temp=num1

num1=num2

num2=temp#求小于较小数字的所有素数

primeNum =getPrimeNumber1(num2)#print (primeNum)

#对较小的数字分解质因数,并将质因数保存在l2中

l2 =[]

result= 1

while num2 != 1:for i inprimeNum:if num2 % i !=0:continue

else:

l2.append(i)

num2= num2 /i#print ('l2: ',l2)

#使用较大数字去除较小数字的质因数,看大数字中包含了哪些较小数字的质因数。

#将大数字也包含的相同的质因数相乘返回结果,即最大公约数

for i inl2:if num1 % i ==0:

result= result*i

num1= num1/ireturnresult#分解质因数,之后求解

defcommonDivisor4(num1,num2):if num1==num2:returnnum1elif num1

temp=num1

num1=num2

num2=temp#求小于较小数字的所有素数

primeNum =getPrimeNumber2(num2)#print (primeNum)

#对较小的数字分解质因数,并将质因数保存在l2中

l2 =[]

result= 1

while num2 != 1:for i inprimeNum:if num2 % i !=0:continue

else:

l2.append(i)

num2= num2 /i#print ('l2: ',l2)

#使用较大数字去除较小数字的质因数,看大数字中包含了哪些较小数字的质因数。

#将大数字也包含的相同的质因数相乘返回结果,即最大公约数

for i inl2:if num1 % i ==0:

result= result*i

num1= num1/ireturnresult#列出小于num的所有奇数,首先去除可以被2整除的,再去除可以被3整除的,再去除可以被5整除的,以此类推...

defgetPrimeNumber1(num):

l= [2]for i in range(3,num+1,2):

l.append(i)

j=min(l)while not j == l[-1]:for k inl:if (k%j==0) and k !=j:#print ('remove: ',k)

l.remove(k)#print (l,' ',j)

j = l[l.index(j)+1]returnl#用生成器和filter求num以内的所有质数

defgetPrimeNumber2(num):

l=[]for n inprimes():if n

l.append(n)else:break

returnl#创建打印奇数的生成器

def_odd_iter():

n= 1

whileTrue:

n= n + 2

yieldn#创建过滤条件,即过滤掉可以被列表中下一个数字整除的数字,留下不可以被这个数整除的,即留下质数

def_not_divisible(n):return lambda x: x % n >0#不断迭代生成列表,根据规则过滤掉列表中元素,留下质数

defprimes():yield 2it= _odd_iter() #初始序列

whileTrue:

n= next(it) #返回序列的第一个数

yieldn

it= filter(_not_divisible(n), it) #构造新序列

time1=time.clock()print (commonDivisor1(12355,525))

time2=time.clock()print (commonDivisor2(12355,525))

time3=time.clock()print (commonDivisor3(12355,525))

time4=time.clock()print (commonDivisor4(12355,525))

time5=time.clock()print ('辗转相除法用时:', (time2-time1)*1000,'秒')print ('更相减损法用时:', (time3-time2)*1000,'秒')print ('分解质因数法用时(用列表求质数):', (time4-time3)*1000,'秒')print ('分解质因数法用时(用生成器求质数):', (time5-time4)*1000,'秒')

python求两个数的最大公约数穷举法_求两个数字的最大公约数-Python实现,三种方法效率比较,包含质数打印质数的方法...相关推荐

  1. python求两个数的最大公约数穷举法_C++求最大公约数四种方法解析

    C++求最大公约数的四种方法思路,供大家参考,具体内容如下 将最近学的求最大公约数的四种方法总结如下: 第一种:穷举法之一 解释:拿其中一个数出来,用一个临时变量(tem)保存,每次都把那两个数除以这 ...

  2. python求两个数的最大公约数穷举法_五十九、如何求N个数的最大公约数和最小公倍数...

    「@Author:Runsen」 ❝ 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化.「---- Runsen」 ❞ 上次介绍了短除法的因式分解,下面正式进入求解:「两个及 ...

  3. python算24点穷举法_关于24点去重的算法?

    === 4月12日更新 === === 先给结论吧 === 花了近一周时间用JavaScript完成了24点去重算法,源码提交到了github上:auntyellow/24 ,可以在线试:gives ...

  4. 五家共井 穷举法_第5讲地图着色问题.ppt

    部分可行解 dominating set problem The?dominating set problem?concerns testing whether γ(G)?≤?K?for a give ...

  5. c语言穷举法等式求缺位数,四年级下册数学奥数试题-培优拓展训练--第13讲:数字谜题(教师版)...

    第十三讲数字谜题 ------------------------------------------------------------------------------------------- ...

  6. 通过Python的列表、while循环,穷举法解决农夫过河问题

    题目:一农夫带着一头狼,一只羊和一担草过河,小船只能一次装载农夫和一样货物,狼会吃羊,羊会吃草,只有农夫在时才安全.现欲让所有物品包括农夫都安全过道河对岸,使用程序实现求解. 学习完毕<Pyth ...

  7. Python【算法设计与分析】穷举法

    # -*- ecoding: utf-8 -*- # @ModuleName: s50 # @Function: 现在36块石板,有36个人,男生每趟搬4块,女生每趟搬3块,2个小朋友能搬1块 # @ ...

  8. 五家共井 穷举法_经典算法题——五家共井

    古代数学巨著<九章算数>中有这么一道题叫"五家共井,甲二绠(汲水用的井绳)不足,如(接上)乙一绠:乙三绠不足,如丙一绠: 丙四绠不足,如丁一绠:丁五绠不足,如戊一绠:戊六绠不足, ...

  9. 前端:JS/32/form对象(表单)(form对象的属性,方法和事件),受返回值影响的两个事件(onclick事件,onsubmit事件),获取表单的元素对象的三种方式,表单的提交和验证方法总结

    form 对象(表单) 一个<form>标记,就是一个<form>对象: 1,form对象的属性 name :表单的名称,主要用来让JS来控制表单: action :表单的数据 ...

最新文章

  1. vc中出现stack overflow错误(VS设置默认栈大小)
  2. java 连接池实例_功能完善的Java连接池调用实例
  3. 探坑mongoDB4.0事务回滚的辛酸历程
  4. 10年 | 写了10年的代码,我最怕写Mybatis这些配置,现在有详解了
  5. C# winFrom窗体设计问题-部分文件打不开窗体设计器 变成类.cs
  6. LintCode 13. Implement strStr()
  7. 三度其三——矢量场的旋度
  8. 从零基础入门Tensorflow2.0 ----一、1.1 实战分类模型(fashion_mnsit数据集,数据读取与展示)
  9. android开发学习 ------- android studio 同时用svn和git 进行代码管理 出现的问题
  10. 贵阳学院教务管理系统服务器,贵阳学院教务处,教务网络管理系统
  11. 软件工程:敏捷过程与极限编程
  12. 三种常见的建筑企业并购方案
  13. win8.1许可证到期提示后如何激活?
  14. linux系统下刻录u盘制作启动盘
  15. xcode登陆appleid报错:连接appleid服务器时出错
  16. 人脸识别之人眼定位、人脸矫正、人脸尺寸标准化---Mastering OpenCV with Practical Computer Vision Projects
  17. Sawyer智能协作机器人帮助中小企业保持市场竞争力
  18. python编程练习:模拟水文模型中的水箱模型(tank model),不含参数率定过程
  19. win7访问共享文件出现登录失败:禁用当前用户
  20. Virtual PC 修改虚拟机的BIOS

热门文章

  1. 知识图谱——Protege(Protégé)配置与使用
  2. 如何注册小程序账号和下载小程序开发工具
  3. Nginx-Caddy之HTTP-HTTPS代理区别
  4. 10月27号吃鸡服务器维护吗,10月27日正式服维护公告
  5. hutool工具包Tailer类监听文件的bug
  6. 鸿蒙系统在哪时间升级一次,华为鸿蒙系统升级时间表
  7. DTOJ#3230. 好题 (hao)
  8. [Eureka单机] SpringCloudEureka的单机服务端配置(Dalston.SR5版本)
  9. map容器/multimap容器
  10. 打飞机python(完整版)