您的位置:首页 > 其它

3.2.1 线性同余法 证明:在形如X[n+1]=(aX[n]+c)%m的递推式中,如果a,m互素,则X[0]将总是出现在周期中。

2008-10-19 12:45 423 查看
递推式是这样的 X[n+1]=(aX
+c)%m, X[0]是初始的X,显然X[0]<m。

那么代入递推式,X
= (a^n*X[0] + c*( 1 + a + a^2 +...+a^n-1) )%m = (X[0]*a^n)%m + (c * ( a^n - 1 ) / ( a - 1 ) ) % m  (*)。

因为gcd(a,m)=1,根据欧拉定理a^φ(m)≡1(mod m)。所以在(*)式中,取n=m*φ(m),那么:

 (X[0]*a^n)%m=(X[0]*( a^φ(m) )^m )%m =(X[0]*1^m )%m = X[0].

对( c * ( a ^(mφ(m)) - 1 ) / ( a - 1 ) ) % m的变化要复杂些。专门看:

a ^(mφ(m)) - 1 = ( a^φ(m) )^m - 1 = ( a^φ(m) - 1 )*(1 + a^φ(m) + a^2φ(m) +...+a^(m-1)φ(m) )。而a^kφ(m)≡1(mod m),所以:

( c * ( a ^(mφ(m)) - 1 ) / ( a - 1 ) ) % m = ( c *  ( a^φ(m) - 1 )*(1 + a^φ(m) + a^2φ(m) +...+a^(m-1)φ(m) ) / ( a - 1)  ) %m

=( c * ( a^φ(m) - 1 )*(1 + 1 + 1 +...+1 ) / (a - 1) ) % m。注意这里1+1+1+1...+1里恰好有m个1。所以:

=(c *  ( a^φ(m) - 1 ) / ( a- 1 ) * m ) %m。显然φ(m) ≥2,则 ( a^φ(m) - 1 ) / ( a- 1 )是个整数。

=0

所以,当n=m*φ(m)时,必有X
=X[0]。虽然m*φ(m)不是最小周期,但至少证明了这个问题。

不知道证明过程有没有误,或者能搞出更小的周期。望众高手指教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c
相关文章推荐