数论中的若干公式(转)

转自:http://blog.csdn.net/pi9nc/article/details/9823615

文中 (a,b...)应该是指 gcd(a,b...)

定理一:

 

定理二:设a>1,m,n>0,则


HDU2685就用到上述定理。

 

定理三:设a>b,gcd(a,b)=1,则

 

 

定理四:设,那么G的值为:


n为素数:本身

n有多个素因子:1

n只有一个素因子:该因子


应用题目:HDU2582.

 

 

定理五:,其中为斐波那契数列。

 


 

定理六:给定A和B,A和B互质,最大不能组合数为A*B-A-B,不能组合数的个数为

 


 

证明:

 


 

Gcd(A, B) = 1,Lcm(A, B) = AB

 

把所有整数划分成A个等价类,每个等价类由相互同余的整数组成任何数分成A个剩余类,分别为 :

 

Ak,Ak+1,Ak+2,……,Ak+(A-1),分别记为{0(mod A)},{1(mod A)}……

 

而B的倍数肯定分布在这A个剩余类中,因为Gcd(A,B)=1,所以每个剩余类中都有一些数是B的倍数,并且是平均分配它的

 

旁证,可见HDOJ 1222 Wolf and Rabbit

 

设 kmin = min{k|Bk∈{i(mod A)}},i ∈ [0, A)

 


则 Bkmin 是{i (mod A)}中B的最小倍数。特别的,AB ∈ {0 (mod A)}

 

Bkmin 是个标志,它表明{i(mod A)}中Bkmin 后面所有数,即Bkmin + jA必定都能被组合出来

 

那也说明最大不能组合数必定小于Bkmin

 


 

我们开始寻找max{ Bkmin },Lcm(A, B) = AB,所以很明显(A-1)B是最大的

 

因为(A-1)B是Bkmin 中的最大值,所以在剩下的A-1个剩余类中,必定有比它小并且能被A和B组合,这些数就是:

 

(A-1)B-1,(A-1)B -2,……,(A-1)B -(A-1),所以最大不能被组合数就是(A-1)B -A=AB-A-B

 


 

如果A和B不互素,那{1 (mod A)}不能被A组合,同样也不能被B和A组合

 

我们能求出各个剩余类的Bkmin之后,不能组合数的个数就是每个剩余类中小于各自Bkmin的数的个数总和。

 

观察如下:A = 5,B = 3

 

{0(mod 5)}:0,5,10,15……
{1(mod 5)}:1,6,11,16……
{2(mod 5)}:2,7,12,17……
{3(mod 5)}:3,8,13,18……
{4(mod 5)}:4,9,14,19……

 


红色的就是不能组合数,可以看出在剩余类中它的数目有规律:S = [0+1+2] + [0+1]

 

因为A和B互质,必有一个不完全周期。

 

整理后得到结果为:

 

 

 


定理七:


定理八:设,则有以下两个结论成立:


(1)


(2)




定理九:



定理十:如果p是素数,p不整除a,对于同余方程,如果,那么方程有gcd(n,p-1)个解,否则没有解。

 

下面是关于GCD的若干性质:

重要性质:gcd(a,b)=gcd(b,a)
gcd(-a,b)=gcd(a,b)
gcd(a,a)=|a|
gcd(a,0)=|a|
gcd(a,1)=1
gcd(a,b)=gcd(b, a mod b)
gcd(a,b)=gcd(b, a-b)
如果有附加的一个自然数m,
则: gcd(ma,mb)=m * gcd(a,b)
gcd(a+mb ,b)=gcd(a,b)
如果m是a和b的最大公约数,
则: gcd(a/m ,b/m)=gcd(a,b)/m
在乘法函数中有:
gcd(ab,m)=gcd(a,m) * gcd(b,m)

 

 

[定理]A^x % m = A^(x%phi(m)+phi(m)) % m (x >= phi(m))
hdu 2837
1)在求a^b^c % m 的时候,递归求b^c % phi(m),如果c很大是得b^c>=phi(m),那么
原式应该=a^(b^c % phi(m) + phi(m)) % m, 但是取余后的c(用c'表示)可能很小使得b^c' < phi(m),
很多代码(可能标程在内)只是判断当前这层,如上例的话 b^c' < phi(m) 所以有的代码就不加 phi(m)了,
事实上应该加上phi(m),如果 b^c >= phi(m)的话;但是神奇的是这题的1000组数据,只判当前也是对的。
2)那到底怎么判断到底加不加模数呢? 提出假设:如果x >= phi(m),则 a^x >= m (a > 1)。假设不成立,
那么存在x >= phi(m)且 a^x < m (a > 1), 则存在 2^phi(m) < m (a取2),确实存在如m=6,phi(6)=2,2^phi(6) < 6,
但是ONLY只有6,所以只需特判即可。所以有定理如果x >= phi(m), a^x >= m (a > 1 && not(a==2&&x==2&&m==6[注意x是真实值]));
那么只要有一层超出了模数,那么之前的都要加上模数!;但是此题不加特判也能AC,经本人尝试几下未找到反例。
posted @ 2016-05-26 10:03  樱花庄的龙之介大人  阅读(727)  评论(0编辑  收藏  举报