python数据结构与算法基础 第十二课
tags:
- python
- 路飞学院
categories:
- python
- 欧几里得
- RSA算法
文章目录
第一节 欧几里得算法
1. 欧几里得算法的介绍
- 约数:如果整数a能被整数b整除,那么a叫做b的倍数,b叫做a的约数。
- 给定两个整数a,b,两个数的所有公共约数中的最大值即为最大公约数(Greatest Common Divisor, GCD)。例: 12与16的最大公约数是4
- 如何计算两个数的最大公约数:
- 欧几里得:辗转相除法(欧几里得算法)
- 《九章算术》:更相减损术
- 这两个本质一样的
- 欧几里得算法: gcd(a, b) = gcd(b, a mod b) a mod b 是a除b的余数
- 例: gcd(60, 21) = gcd(21, 18) = gcd(18, 3)= gcd(3, 0)= 3
# 递归写法
# 这是一个伪递归,和循环效率一样
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
def gcd_no_rec(a, b):
while b > 0:
r