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

递推式是这样的 X[n+1]=(aX[n]+c)%m, X[0]是初始的X,显然X[0]<m。

那么代入递推式,X[n] = (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[n]=X[0]。虽然m*φ(m)不是最小周期,但至少证明了这个问题。

不知道证明过程有没有误,或者能搞出更小的周期。望众高手指教。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值