已知奇数t,求使(2^n-1)可被t整除的n(n>1)的算法?

gxqcn 2006-10-11 08:40:28
如题。欢迎大家共同探讨其算法。
如可能,在已知奇数t的情形下,请预估出满足 t|(2^n-1) 成立的最小 n(n>1) 的上限?
...全文
253 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxqcn 2006-10-13
  • 打赏
  • 举报
回复
现在改一下提问,使之更具实用和学术价值。

已知 p 是个大奇数(并非一定是素数),令 S=(2^x-1)*(2^y-1),其中 x、y 为正整数,
求一组解(x,y):使 p|S 且 (x+y) 尽可能小。
gxqcn 2006-10-13
  • 打赏
  • 举报
回复
似乎没什么新意,就此结帖了。
gxqcn 2006-10-12
  • 打赏
  • 举报
回复
感谢spirit_sheng(老盛)的参与。
如果在知道具体t的前提下,若能将n的最小上限进一步缩小才有价值。

我突然想到可由如下过程解决:
为方便理解,现将字母作如下代换:t→p,n→x
实际上是解关于x的同余方程:2^x≡1(mod p),求非零整数解。

由欧拉定理:2^φ(p)≡1(mod p)
所以,必有 x|φ(p)

这样,就可以先将 φ(p) 分解质因数后,逐一试探即可。
但是,如果 p 是个大奇数(并非一定是素数)时,计算 φ(p) 本身将是个难题。
spirit_sheng 2006-10-11
  • 打赏
  • 举报
回复
修正一下, 我能证明的最小上限为 t-1
由于 f(k) = 2^k mod t, 其值不可能为0, 所以其取值范围实际上 1..t-1, 修正此点以后, 证明原理同上, 可以证明其最小上限为 t-1

spirit_sheng 2006-10-11
  • 打赏
  • 举报
回复
首先, 我能证明的最小上限为t

证明如下: 记 f(k) = 2^k mod t, 则 f(k) 的取值范围为 0至 t-1
考虑: f(1) .. f(t), 一个有 t 个数,
如果无重复, 则必有一个数为1, 即存在一 n, 1 <= n <= t, f(n) = 1, 即 2^n-1 能被t整除, 则于 f(1) = 2, 从而 n不可以为1, 也就是说 1 < n <= t, 此条件证明之
如果有重复, 也就是说存在 1<=i < j <=t, f(i) = f(j), 即
(2^j - 2^i) mod t = 0, 即 2^i * (2^(j-i) - 1) mod t = 0, 由于 2^i (i>=1) 与任何奇数 t 互质, 所以, (2 ^(j-i) - 1) mod t = 0, 令 n = j - i, 由 1 <= i < j <= t, 可以推出 1 < n < t, 此条件证明之
所以, 其最小以限不会超过 t


33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧