找回密码
 欢迎注册
查看: 29019|回复: 20

[原创] pari中如何计算中国剩余定理?

[复制链接]
发表于 2008-12-13 20:52:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
我知道mathematica中是使用ChineseRemainder这个函数,
但是pari/gp中的范例太少,我不知道如何使用chinese这个函数,
不知道谁能给我几个示范的例子????
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-12-13 21:04:33 | 显示全部楼层

我自己通过网络会了!!

chinese(Mod(2,29),Mod(52,251))但是这个函数远远没有mathematica的好!!!!
pari/gp一次只能使用两个参数!郁闷!!!!!!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-13 22:58:09 | 显示全部楼层
你可以考虑NTL
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-14 15:23:44 | 显示全部楼层
感觉PARI/GP还是不能令人满意的。很多功能没实现,有些实现了的效率也很差。

mathematica也有一些函数效率很差。比如,计算离散对数的函数MultiplicativeOrder[g, n, a1, a2, ...]. 我在mathematica 6.0中用这个函数计算
$4^{x}=9 mod 744490528907$,慢得让人不感相信!
而在Discrete logarithm calculator中,得出x,1秒都不要。不知道mathematica 7.0是否有改进。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-12-14 17:17:27 | 显示全部楼层

mathematica7.0

input:Timing[MultiplicativeOrder[4, 744490528907]]
output:{0., 372245264453}
无论6.0还是7.0都没有你说的那么慢!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-12-14 17:18:27 | 显示全部楼层

http://www.alpertron.com.ar/DILOG.HTM

找到一个bug!
base=3
power=1
modulus=10000

计算不出来!!!!!!!!!!!!!!!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-12-14 17:20:43 | 显示全部楼层

pari计算!

znorder(Mod(3,10000))
得500
3^k=1 mod 10000, k是最小的正整数,k=500
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-14 21:05:49 | 显示全部楼层
呵呵

嫌弃他们慢
自己写C代码啊
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-15 08:42:04 | 显示全部楼层
计算a^x=1 mod n当然简单了,计算phi(n),然后求phi(n)的因子,依次计算就可以了。
对744490528907,phi(744490528907)=2*372245264453.
因此,我们只需要计算4^372245264453 mod 744490528907, 4^2 mod 744490528907就可以了。
因此,很快就可以确定x的值。

对计算a^x=1 mod n而言,复杂度等同与因子分解。目前来看,计算100位的n还是可以的。
但是对计算a^x=c mod n而言,计算80位都比较困难。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-15 09:00:52 | 显示全部楼层
确实如此。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-6 13:52 , Processed in 0.046601 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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