找回密码
 欢迎注册
楼主: 无心人

[讨论] 能通过2,3,5,7的检验的合数

[复制链接]
 楼主| 发表于 2008-10-13 21:18:33 | 显示全部楼层
要怎么夸奖你呢
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-10-13 21:50:07 | 显示全部楼层
准备穷举10^7内的素数对(p,q),以改进结果。 哪位给优化一下MultiModular()函数。 另外,无心人以前说过:
原帖由 无心人 于 2008-10-10 07:53 发表 你还在随机抽取? 按我说的算法 假设5000个候选 1秒至少可测试1万个 用C/C++还要多 那么测试10万素数底 只需要5万秒 而最后的两两求与 其工作量是 5000/128
128怎么来的,我这边只是用__int64来做的. 一次基本运算就可以得到128位内的位为1的数量?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-10-13 21:58:58 | 显示全部楼层
SIMD SSE2 pand
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-10-14 21:24:48 | 显示全部楼层

MultiModular 算法改进

请将 19#
  1. __int64 MultiModular( __int64 a, __int64 b, __int64 mod ){
  2. __int64 r=0, t=a%mod;
  3. while( b>0 ){
  4. if( (b&1) && (r=r+t)>mod ) r-=mod;
  5. if( (t<<=1)>mod ) t-=mod;
  6. b>>=1;
  7. }
  8. return r;
  9. }
复制代码
修改成如下的:
  1. __int64 MultiModular( __int64 a, __int64 b, __int64 mod ){
  2. __int64 t=a%mod;
  3. __int64 r=t;
  4. __int64 mask = 1;
  5. mask <<= 54; /* 10^16 < 2^54 */
  6. while( mask > b ) /* b >= 1 */
  7. mask >>= 1;
  8. while( mask >>= 1 )
  9. {
  10. if (( r <<= 1 ) >= mod ) r -= mod;
  11. if (( b & mask ) && (( r += t ) >= mod )) r -= mod;
  12. }
  13. return r;
  14. }
复制代码
效率应更高(注:我未测试;本算法 t 保持不变)。 如果还要优化,则可能需要用到: 1、Montgomery 算法; 2、汇编 优化。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-10-15 08:05:28 | 显示全部楼层
我怎么看蒙哥马利算法里面似乎还有双倍精度计算啊? 呵呵
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-10-15 08:13:24 | 显示全部楼层
蒙哥马利算法任意精度都可, 但超长的似乎并不划算,如果无法享用到O(nlogn)级别的大数乘法的话。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-10-15 08:31:27 | 显示全部楼层
我是这个意思 蒙哥马利算64位的模乘 中间是否不再有64位乘了?? 如果有,未必比连续64位减速度快 当然,纯64位环境,直接 mov rax, a mov rdx, b mov rbx, mod mul rdx div rbx mov rax, rdx 比什么算法都快 所以不用考虑
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-10-15 21:08:33 | 显示全部楼层
原帖由 无心人 于 2008-10-15 08:31 发表 我是这个意思 蒙哥马利算64位的模乘 中间是否不再有64位乘了?? 如果有,未必比连续64位减速度快 当然,纯64位环境,直接 mov rax, a mov rdx, b mov rbx, mod mul rdx div rbx mov rax, rdx 比什么算法都快 所以不用考虑
32位下计算64位模乘,用蒙哥马利算法需要的乘法次数比较多,可能确实不划算。 64位下,蒙哥马利算法需要三次乘法,一次比较,1到2次加减法, 如果 div 时钟数远大于 mul,则直接算法不占优。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-10-15 21:30:42 | 显示全部楼层
除法我想不会超过乘法时间的3倍的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-10-16 20:54:18 | 显示全部楼层
medie2005 可有新的更好结论?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-11-22 11:45 , Processed in 0.025210 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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