时间:2021-05-22
本文实例讲述了Python实现的求解最大公约数算法。分享给大家供大家参考,具体如下:
使用Python求解两个数的最大公约数的时候用到了前面介绍的分解质因式。其实,我写分解质因式程序的时候就是因为发现在实现最大公约数求解的过程中用到了这个功能。
比较令我开心的是之前学的一点Python集合处理功能居然在这个时候也派上了用场,小程序的完成让人感觉比较舒心。
代码实现如下:
#!/usr/bin/pythonfrom collections import Counterdef PrimeNum(num): r_value =[] for i inrange(2,num+1): for jin range(2,i): if i % j == 0: break else: r_value.append(i) return r_valuedef PrimeFactorSolve(num,prime_list): for n inprime_list: if num % 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) return Counter(ret_value)def MaxDivisor(num1,num2): dict1 =PrimeDivisor(num1) dict2 =PrimeDivisor(num2) max_divisor= 1 for key1 indict1: if key1 in dict2: if dict1[key1] < dict2[key1]: max_divisor*= (key1 ** dict1[key1]) else: max_divisor*= (key1 ** dict2[key1]) return max_divisorprint(MaxDivisor(12,18))print(MaxDivisor(7,2))print(MaxDivisor(7,13))print(MaxDivisor(24,56))print(MaxDivisor(63,81))程序的执行结果如下:
E:\WorkSpace\01_编程语言\03_Python\math>python max_divisor.py
6
1
1
8
9
通过验证,计算结果准确。
PS:这里再为大家推荐一款本站相关在线工具供大家参考:
在线最小公倍数/最大公约数计算工具:
http://tools.jb51.net/jisuanqi/gbs_gys_calc
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
python怎么求最大公约数和最小公倍数一、求最大公约数用辗转相除法求最大公约数的算法如下:两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b
本文实例讲述了Python基于辗转相除法求解最大公约数的方法。分享给大家供大家参考,具体如下:之前总结过一次高德纳TAOCP中的最大公约数求解,其实课后题中的算
C++实现多数的最大公约数的实例题目:求最大公约数输入一组正整数(数量小于20),输出其最大公约数。输入:1213344111111输出:11基本思路:从第一个
本文实例讲述了Python实现的求解最小公倍数算法。分享给大家供大家参考,具体如下:简单分析了一下,前面介绍的最大公约数的求解方法跟最小公倍数求解方法类似,只需
C++实现求最大公约数和最小公倍数最大公约数辗转相除法:intmaxDivisor(inta,intb){intc=b;while(a%b!=0){c=a%b;