码迷,mamicode.com
首页 > 其他好文 > 详细

基础数论的一些名词和定理 [未完]

时间:2018-07-15 12:05:41      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:约数   int   ==   style   code   nbsp   答案   strong   代码实现   

欧几里得算法

欧几里得算法用来快速求解两个数的最大公约数。

整除性

\(a|b\)表示\(a\)整除\(b\),即\(b\)是\(a\)的倍数。

 

定理1:设\(a,b,c\)为整数,若\(a|b, a|c\),则\(a|(b+c)\)成立

证明: 设\(b = sa,  c = ta(s,t为整数)\),则\(b+c = sa + ta = a(s+t)\),故\(a | (b+c)\)

最大公约数

 \(gcd(a, b)\)表示\(a,b\)的最大公约数。

最暴力的求解最大公约数的方法是枚举\(a,b\)的所有公约数,并取相同的最大的公约数。但很明显太浪费时间了。

 

欧几里得是怎么做的?

要求解\(gcd(a,b)\),通过不断求解$ gcd(b, a  \% b) $直到$ a \% b = 0 $时,取\(b\)作为答案。

代码实现:

int gcd(int a, int b){
    return b==0?a:gcd(b,a%b);
}

注意为什么不用判断\(a\)和\(b\)的大小?因为当\(a < b\)时$ a \% b $ == \(a\)

 

$ S(n,k)= \sum\limits_{i=0}^kC_{n/p}^{i/p}*C_{n \%p}^{i \%p}\ mod\ p $

 

基础数论的一些名词和定理 [未完]

标签:约数   int   ==   style   code   nbsp   答案   strong   代码实现   

原文地址:https://www.cnblogs.com/qixingzhi/p/9312928.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!