找回密码
 新注册用户
搜索
查看: 6177|回复: 2

[求助] 请高手出个招,找出最小能使2^n-1被T整除的n值

[复制链接]
发表于 2011-12-13 22:12:27 | 显示全部楼层 |阅读模式
我想完成下面的测试,请问那位高手有高招。
若有一个奇数T,在T-1的范围内,找出最小能使2^n-1被T整除的n值。
例1:若T=127,
当n=7时,2^n-1=2^7-1能被127整除,并且n=7是适合条件的最小数。
2、若T=129
当n=14时,2^n-1=2^14-1能被129整除,并且n=14是适合条件的最小数。
若编程进行大数快速运算,有什么好办法,请高手指点,先谢谢了!
回复

使用道具 举报

发表于 2011-12-14 18:40:25 | 显示全部楼层
先考虑T是素数的情形,比如T=127时。那么T能被2^n-1整除的数n只可能是T-1的因子,也即n是126的因子,依次判断2^2-1,2^3-1,2^6-1,2^7-1,2^9-1,...能否除尽127,可得n=7.
再判断T是合数的情形,设T=p1*p2*...*pk
先求pi能被2^n-1整除的最小的数ni,可得T能被2^n-1整除的最小的数n就是n1,n2,...,nk的最小公倍数。

如若编程的话,可以先设nMult=2,i=1
计算nMult = (nMult * 2) mod T; i=i+1;
当nMult 等于1时, i就是所要求的最小的n
回复

使用道具 举报

 楼主| 发表于 2011-12-14 19:43:22 | 显示全部楼层
谢谢wreck的解答,方法肯定是没有问题,要从速度上看可能是行不通,不说大数,
就是五、六十位数字,我想这时间就不会少。
并且这种方法,涉及的两大难题:
1、判断素数,
2、因子分解
因子分解到不了的位数就不能找到最小数n。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 新注册用户

本版积分规则

论坛官方淘宝店开业啦~
欢迎大家多多支持基金会~

Archiver|手机版|小黑屋|中国分布式计算总站 ( 沪ICP备05042587号 )

GMT+8, 2024-4-28 08:01

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表