代码来自维基百科的Modular arithmetic。

这两段代码都不是大整数计算的程序,是2进制64整数的计算程序,数据不能大于2进制63位。两段代码分别如下:

uint64_t mul_mod(uint64_t a, uint64_t b, uint64_t m)
{uint64_t d = 0, mp2 = m >> 1;int i;if (a >= m) a %= m;if (b >= m) b %= m;for (i = 0; i < 64; ++i){d = (d > mp2) ? (d << 1) - m : d << 1;if (a & 0x8000000000000000ULL)d += b;if (d > m) d -= m;a <<= 1;}return d;
}
uint64_t mul_mod(uint64_t a, uint64_t b, uint64_t m)
{long double x;uint64_t c;int64_t r;if (a >= m) a %= m;if (b >= m) b %= m;x = a;c = x * b / m;r = (int64_t)(a * b - c * m) % (int64_t)m;return r < 0 ? r + m : r;
}

B00007 快速模幂运算的两个C语言程序相关推荐

  1. Modular_exponentiation模幂运算

    https://en.wikipedia.org/wiki/Modular_exponentiation 蒙哥马利(Montgomery)幂模运算是快速计算a^b%k的一种算法,是RSA加密算法的核心 ...

  2. 51Nod-1013 3的幂的和【快速模幂+逆元】

    1013 3的幂的和 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 求:3^0 + 3^1 +...+ 3^(N) mod 1000000007 Input 输入 ...

  3. 模幂运算问题,使用朴素算法和重复-平方算法(快速幂+C#计算程序运行时间)

    1.什么是模幂运算问题 给出a, k, mod 计算ak(%mod)a^k (\%mod)ak(%mod)的值 k是一个非常大的正整数(超过1e7) 附,一个可以提交的地方: leetcode 372 ...

  4. 【密码学】C 语言实现 RSA 模幂运算

    RSA模幂运算 1. 实验内容 按照平方乘算法和模重复平方法,分别计算am mod n 2. RSA介绍 RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi ...

  5. 如何高效进行模乘、模幂运算?——蒙哥马利算法(Montgomery Algorithm)从入门到精通

    蒙哥马利算法(Montgomery Algorithm)从入门到精通 ​ 加密算法中,模运算(包括模乘.模幂运算)是难以避免的,如何高效地进行模运算,是提高算法效率的一个关键. 直观的想法 ​ 在数学 ...

  6. HDU2035 人见人爱A^B【快速模幂】

    人见人爱A^B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  7. 51Nod-1046 A^B Mod C【快速模幂】

    1046 A^B Mod C 基准时间限制:1秒 空间限制:131072KB 分值:0难度:基础题 给出3个正整数A B C,求A^B Mod C. 例如,3 5 8,3^5 Mod 8 = 3. I ...

  8. HDU1163 Eddy's digital Roots(解法二)【快速模幂+九余数定理】

    问题链接:HDU1163 Eddy's digital Roots. 问题简述:参见上述链接. 问题分析:计算n^n的数根,一要快,二要简单.使用快速模幂计算,加上数论中的九余数定理就完美了. 程序说 ...

  9. C++modular exponentiation模幂运算的实现算法(附完整源码)

    C++modular exponentiation模幂运算的实现算法 C++modular exponentiation模幂运算的实现算法完整源码(定义,实现,main函数测试) C++modular ...

最新文章

  1. MySQL集群系列2:通过keepalived实现双主集群读写分离
  2. nginx 修改并隐藏版本号
  3. 【项目实战课】AI零基础,人人免费可学!基于Pytorch的SimpleNet人脸表情识别实战...
  4. 每天一点点之vue框架开发 - vue组件之间传值(父向子传值)
  5. 11个方法,打造用户增长体系
  6. 以卖香蕉为例,从4个方面了解SQL的数据汇总
  7. JeecgCloud 微服务开发平台-部署文档
  8. 学习 python logging(1): 基本用法
  9. matlab中ncread读取nc文件其中一个三维参数的其中一维_Matlab使用技巧总结-1
  10. Xcode + cocoapods + jenkins + fastlane + git + 蒲公英自动化打包 上传
  11. Android混淆从入门到精通
  12. 微软若“无故”解雇暴雪 CEO,将付 1500 万美元“分手费”
  13. 1 Linux系统性能测试与监测工具汇总
  14. Kettle JAVA代码表达式
  15. 我的世界java出生蘑菇岛,《我的世界》出生就有蘑菇岛和海底神庙的地图,附近还有村庄!...
  16. 相机下载_索尼相机怎样用wifi传照片到手机
  17. RPC调用和HTTP调用的区别
  18. 阿里云DataV数据可视化 回调ID详解 API数据展示
  19. 环境搭建 - 奥比中光3D摄像头(Deeyea)
  20. 教你手把手基于java实现兼职招聘系统、基于SSM+mysql的Web校园招聘网站

热门文章

  1. 插上翅膀,让Excel飞起来
  2. TortoiseGit(Windows)使用方法汇总
  3. WAMP安装curl扩展并发起https请求
  4. PHP异步调用实现方式
  5. 1.Echarts的坑:切换tab时,echart显示默认的100px
  6. 原生html使用element组件,使用element-ui的table组件时,渲染为html格式
  7. 数据正则化matlab程序,求助 计量经济模型中用Tikhonov正则化方法参数估计程序修改...
  8. mysql yum安装和 rpm安装_yum 和 rpm安装mysql彻底删除
  9. CentOS 7安装mysql
  10. android edittext换行位置不变,Android EditText使用自动换行但无硬性返回