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)%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)不是最小周期,但至少证明了这个问题。
不知道证明过程有没有误,或者能搞出更小的周期。望众高手指教。
相关文章推荐
- 证明:如果矩阵A的列向量组线性无关,则矩阵ATA可逆
- vs2003安装大问题(总是出现版本与VS所要求的组件版本不匹配)
- 纯线性同余随机数生成器
- qt 如果出现未声明的变量,前提是已经声明过的
- Win10预览版11099总是出现弹窗WSClient.dll出错丢失的解决办法
- web.xml中配置Struts标记库<taglib>标签总是报错出现红色下划线
- 在mysql 中创建任意函数,总是出现这个错误。是什么原因啊??
- 使用pip install时总是出现Read timed out
- ENDNOTE 使用中总是出现this library appears to be damaged。。
- Activity声明周期容易出现的问题
- 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
- Win10系统玩游戏键鼠总是出现操作延迟(卡)该怎么办?
- 如果出现The content of element type "package" must match "(result-types?,interceptors?,default-interce
- 【证明】关于项链问题中旋转操作的置换群的循环节个数、长度的证明【Pólya】【同余】
- ORACLE中Insert时总是出现让enter value for....
- [转]如果我不曾为你我的未来努力,那我拿什么证明我爱着你?
- 开机的时候如果出现提示$home/.dmrc无法写入 问题解决方法
- 当使用微软365时总是出现:“程序出现问题”
- centos下面配置lamp,如果安装apache完成后,访问ip不出现欢迎页,把防火墙关闭即可
- 迭代取中法,线性同余法及混合同余法产生伪随机数方法的scilab实现