以下内容仅为个人理解
欧几里德算法(gcd):
- 一种用来求最大公约数的算法
- 表示为gcd(a,b)
- 也可以用gcd算法求最大公约数(lcm),lcm(a,b)=a*b/gcd(a,b)
- (为了防止程序运行时溢出,在实际使用时常常先除后乘,也就是lcm(a,b)=a/gcd(a,b)*b(由于乘除不分先后,所以该式成立))
- gcd的运算过程:gcd(a,b)=gcd(b,a%b).(a<b).因为在a%b的不断循环运行过程中,a是不断递减的,所以不会出现死循环的情况.
- gcd的返回结果的条件:gcd(b,0)==b.也就是说,当方程gcd(a,b)递归到b=0时,说明a已经是此时的最大公约数了。那么就不需要再计算,直接返回a的值即可。映射到代码中的表现,就是如下代码:
int gcd(int a,int b){
if(a<b)swap(a,b);
if(b==0)return a;
return gcd(b,a%b);
}
- 通过一系列证明可以得出,在一般的数据范围下不会出现爆栈的情况.这是因为gcd(a,b)这个方法的递归层数是级别的.(n=max(a,b))
扩展欧几里德算法(exgcd):
- 用于求解贝祖方程:形如ax+by=gcd(a,b)=d这样的方程,已知a,b,求x和y的值(通过数论的其他内容可以证明该方程一定成立(有解)).
贝祖定理:
- 对于形如的方程,假若(a,b为不等于零的整数),则存在相对应的(整数解x,y).
二元运算:
- 由两个元素产生一个新元素的运算,例如:加减乘除
卡尔丹公式:
- 三次方程的一般求法
加法逆元:
- 即"相反数".
- 如:a的加法逆元为-a
群:
- 代表一个满足封闭性、结合律,有单位元、逆元的二元运算的代数结构.
群论:
- 对群的研究
单位元:
- 定义一种运算规则"*",若a*e=e*a=a,则e称为单位元.
自然数:
- N(大于等于0的整数)
合数:
- 指自然数中除了能被1和本身整除之外,还能被其他数(0除外)整除的数
质数(素数):
- 在大于1的自然数中,除了1和它本身不能被其他数整除的数
因数(约数):
- 如果整数a除以整数b(b0)没有余数,则b是a的因数.
极限:
- 无限靠近而达不到的值.
映射(双射):
- 两种元素的集相互对应,等同于函数.