一道看似简单的题目!!

h2plus0 2002-12-30 09:39:35
试证 : P = 4*3^170 , 试用计算机证明:存在整数a 使得 P 除以 6a-1 的余数为a.(其中 a 不为 0,1)。请问该采用什么算法呢?
(注意是 3的170次方)

我在c++builder版看到的,


ilikeff8(迷茫) 兄给出的解决方法是取对数,请见下,
但我考虑了一下, 即使用对数方法,好像接解决不料问题亚,
因为对X,a的取值范围依然很大,再加上2重循环???
恐怕是 。。。。。

大家有好办法没有?




/************************************************
P = 4*3^170
lgP=lg(4*3^170)
lgP=lg4+170lg*3


P
---- = X+a
6a-1

P=(X+a)(6a-1)
lgP=lg((X+a)(6a-1))
lg4+170lg*3=lg((X+a)(6a-1))

再用双重循环
*************************************************/

...全文
33 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
saint001 2003-01-02
  • 打赏
  • 举报
回复
用不用再做循环?
THQ 2003-01-02
  • 打赏
  • 举报
回复
快速指数算法~~
saint001 2003-01-01
  • 打赏
  • 举报
回复
降低本题求解复杂度的关键是不是模幂运算?
模幂运算肯定要优化
但如何通过其来求得a的值?

starfish(海星):
那本书是如何把问题转化的?
LeeMaRS 2003-01-01
  • 打赏
  • 举报
回复
或<<实用算法的设计与分析>> 吴文虎写的, 也有.
就是将a转二进制, 然后利用同余性质, 只计算为1的位的模就好了:D
starfish 2002-12-31
  • 打赏
  • 举报
回复
具体的算法参见Introduction to algorithm
starfish 2002-12-31
  • 打赏
  • 举报
回复
求a^b mod n称为模取幂运算
用分治法可以达到O(klogk)的复杂度,其中k是a,b,n的二进制位数

h2plus0 2002-12-31
  • 打赏
  • 举报
回复
to widewave,

其中 a 不为 0,1
lxqem 2002-12-31
  • 打赏
  • 举报
回复
P
---- = X+a
6a-1
有问题,不正确!
只能是下面的等式:k是自然数。
P=k*(6a-1)+a
widewave 2002-12-31
  • 打赏
  • 举报
回复
1也是一个解吧。
因为P的最后一位是6。
6/5 ......余1。
saint001 2002-12-30
  • 打赏
  • 举报
回复
pro_wang () 刚在本版提出

a=3^56
k=2*3^113+3^56

a+(6a-1)*k
=a+(6a-1)*(2*3^113+3^56)
=3^56+(6*3^56-1)*(2*3^113+3^56)
=3^56+(6*3^56-1)*(2*3^113+3^56)*6/6
=3^56+(6*3^56-1)*(4*3^114+2*3^57+1)/6-(6*3^56-1)/6
=3^56+(8*3^171-1)/6-(6*3^56-1)/6
=3^56+4*3^170-1/6-3^56+1/6
=4*3^170
=P
因此3^56是一个解

33,007

社区成员

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

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