请问给定一个大整数(如10^300数量级),可否快速求其倒数的循环节长度?

fracting 2007-07-20 02:49:22
对一个大整数求倒数,用牛顿法可以快速达到很高的精度,但需要的空间很大,如果求一个10^300数量级的质数p的倒数,其循环节长度有可能达到p-1,没有一台计算机的内存能够储存整个循环节的数据,如果用普通的除法,只需储存余数,占用的内存不大,可却可能要计算p-1次,不可能算完,请问有什么好的方法解决这个问题吗?只要有循环节的长度就可以,不用输出循环节的内容
这个问题的另一种描述:给定大整数n(可能是质数也可能是合数,且不知道这个数的分解形式),求最小的k使10^k ≡1 (mod n)
如果把10改成2,有什么好的算法吗?
期待高手赐教,不胜感激!
本人第一次提问,囊中羞涩只有100分,希望大家不要见怪.参与讨论者有分
...全文
735 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fracting 2007-07-21
  • 打赏
  • 举报
回复
谢谢medie指点!受益了.我会好好补好数学功底的!
那么此帖该结了吧
medie2005 2007-07-20
  • 打赏
  • 举报
回复
首先,我也是个业余爱好者.

实际上,对"最小的k使a^k ≡1 (mod n)",k在数论中,称为"a对模n的指数".

实际上,对"a对模n的指数"研究已经开始很久了.欧拉就研究过.现在也没什么重大进展.

如果楼主要挑战"因数分解"难题,首先就应当搞出一套新理论,在理论的基础上设计算法.
关于循环节的求取,已经被很多人研究了,估计要搞出新理论,极其困难.

"因数分解"与"循环节长度"间的对应关系,连我这种业余的人都能看出来,何况那些数论专家? 数论专家都没有研究出来,要搞出新理论更是难上加难.

我并不是打击楼主,只是希望楼主先打好一个深厚的数学功底,再去想这些未解难题.
fracting 2007-07-20
  • 打赏
  • 举报
回复
请问除了用Ψ(n),目前有没有别的算法?
事实上提出这个问题的初衷,是发现大数分解问题可以转化为求一个大数的倒数的循环节的长度
给定n,在RSA加密中,n肯定是两个质数的积,设n=p*q,此时1/n的循环节的长度l|gcd(p-1,q-1),
假定知道l的因数分解,l=l(1)^c(1)*l(2)^c(2)*...*l(k)^c(k),则l有Π[c(i)+1]个约数,将这些约数分别加上1,如果某个约数y(j)加一后是质数,则y(j)+1有可能是n的约数,对所有<sqrt(n)-1的y(j)进行检验,必能找到一个恰好满足y(j)+1=min(p,q),这一部分所用的时间应该不会很多.于是大数问题就转化为求1/n的循环节长度l
当然l也可能是一个很大的数,但对n为奇数的情况,l必为偶数,可以先除去所有因数2,甚至其他较小的素因子,得到l',然后再用相同的办法,求1/l'的循环节长度l(2)...
即使在最坏的情况下,也有l'<n/4,因此一个300位的大整数,最多只需通过log(10^300)/log(4)<500次转换,就可以完成分解
当然,上述设想完全是建立在存在一种高效算法求1/n的循环节长度l的情况下,如果除了Ψ(n)的方法之外,没有别的方法,那么上述设想大概毫无价值,提此问题正是为了寻找一种新的方法,不依靠ψ(n),快速求l
我只是个业余爱好者,在这里提出自己的一点点想法,见笑了!
medie2005 2007-07-20
  • 打赏
  • 举报
回复
我的意思是:对于"a为与n互素的任意数",我给的方法是通用的.但是,对于特殊的a,可能存在比"通过求ψ(n),逐个试验"更好的算法.
zgg___ 2007-07-20
  • 打赏
  • 举报
回复
如果n是难分解的大整数,那么a=2又能带来什么便利呢?
medie2005 2007-07-20
  • 打赏
  • 举报
回复
对a^k ≡1 (mod n)

若n与a互素,求分母n的欧拉函数值ψ(n).那么循环节长度k必是ψ(n)的约数.
若n与a有公因子,显然无解.

根据这个性质,对每个约数试验就可以了.

ψ(n)的求法:
设n=p1^c1*p2^c2*...*pk^ck;(pi为素数)
那么,ψ(n)=(p1-1)*p1^(c1-1)*(p2-1)*p2^(c2-1)*...*(pk-1)*pk^(ck-1).

因此求ψ(n)与将n因数分解密切相关.
如果n有300位的话,现在的技术,对300位数分解是困难的.

当然,以上只是对a^k ≡1 (mod n)(a为与n互素的任意数)形式来讨论的.如果a=2,可能有更好的办法.

33,027

社区成员

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

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