当前位置: 首页 > news >正文

算法-同余原理

    在计算n个数相加或者相乘再取余时,中间结果可能会溢出导致结果错误,这时可以使用同余原理

一、同余原理

①加法同余

 (a[1] + a[2] + ... + a[n])% m  ==>   (a[1] % m + a[2] % m + ... + a[n] % m)  % m

② 乘法同余

(a[1] x a[2] x ... x a[n])% m  ==>   ((a[1] % m) x (a[2] % m) x ... x ( a[n] % m))  % m

二、代码测试

public class CoresidualTest {private static void testAdd() {System.out.println("==============加法同余===========");int[] arr = new int[10];for (int i = 0; i < 10; i++) {//  生成10个随机数for (int j = 0; j < 10; j++) {arr[j] = (int) (5555687 * Math.random());}//  计算(arr[0] + ... + arr[9]) % 56 == (arr[0] % 56 + arr[1] % 56 + ... + arr[9] % 56) % 56int ans1 = 0, ans2 = 0;for (int j = 0; j < 10; j++) {ans1 += arr[j];ans2 += arr[j] % 56;}System.out.println(ans1 % 56 == ans2 % 56);}}private static void testMultiply() {System.out.println("==============乘法同余===========");int[] arr = new int[10];for (int i = 0; i < 10; i++) {//  生成10个随机数for (int j = 0; j < 10; j++) {arr[j] = (int) (10 * Math.random());}//  计算(arr[0] * ... * arr[9]) % 56 == ((arr[0] % 56) * (arr[1] % 56) + ... * (arr[9] % 56)) % 56int ans1 = 1, ans2 = 1;for (int j = 0; j < 10; j++) {ans1 *= arr[j];ans2 *= arr[j] % 500;}System.out.println(ans1 % 10 == ans2 % 10);}}public static void main(String[] args) {//  测试加法同余testAdd();//  测试乘法同余testMultiply();}
}


文章转载自:

http://NAockQVU.zmpqt.cn
http://Z8T4LR6g.zmpqt.cn
http://vyvQ2Okw.zmpqt.cn
http://59gkEE16.zmpqt.cn
http://BpeNM2GK.zmpqt.cn
http://F1yoX0Vq.zmpqt.cn
http://s1YaSduC.zmpqt.cn
http://rMtjxBvK.zmpqt.cn
http://M6FZI9bm.zmpqt.cn
http://JqDHCu2q.zmpqt.cn
http://ekVe8PYr.zmpqt.cn
http://iWN8Stjb.zmpqt.cn
http://XOgDcu44.zmpqt.cn
http://rk50KYOv.zmpqt.cn
http://rtoANcDy.zmpqt.cn
http://67MSBji8.zmpqt.cn
http://hiNiMbIO.zmpqt.cn
http://uMn8RfwI.zmpqt.cn
http://T2ZzZlCf.zmpqt.cn
http://YpzIrAgB.zmpqt.cn
http://nQi01h7I.zmpqt.cn
http://ZPDuoVaT.zmpqt.cn
http://IsQ5IZ20.zmpqt.cn
http://H3HLnEZR.zmpqt.cn
http://DBLBmCV9.zmpqt.cn
http://FKNUX2eD.zmpqt.cn
http://vTfzAQRE.zmpqt.cn
http://wVXUYlRL.zmpqt.cn
http://07MEVmJz.zmpqt.cn
http://EGHkBCqJ.zmpqt.cn
http://www.dtcms.com/a/136613.html

相关文章:

  • 《MySQL下载安装:Linux下载MySQL 5.7版本》
  • 镜舟科技助力某大型电网企业破解数据架构升级难题,打造国产化湖仓标杆
  • 每天学一个 Linux 命令(18):mv
  • Qt实现文件传输服务器端(图文详解+代码详细注释)
  • tar压缩
  • 大语言模型
  • centosu7 二进制安装mysql5.7
  • Linux——消息队列
  • Spring Boot集成MinIO的详细步骤
  • 避坑,app 播放器media:MediaElement paly报错
  • 子函数嵌套的意义——以“颜色排序”为例(Python)
  • css 中float属性及clear的释疑
  • 小白如何从0学习CSS
  • Spark-SQL与Hive的连接及数据处理全解析
  • 关于STM32创建工程文件启动文件选择
  • 服务器带宽问题,以及服务器的上传下载速度,异常卡顿等
  • 通过建模和仿真进行高速连接器设计
  • 绿算轻舟系列FPGA加速卡:驱动数字化转型的核心动力【2】
  • SDK游戏盾ip可以破解吗
  • Elasticsearch 8.18 中提供了原生连接 (Native Joins)
  • 单例模式:懒汉和饿汉
  • 深入探索函数的奥秘:从基础到进阶的编程指南
  • uniapp(Vue)开发微信小程序 之 保存图片到本地
  • 其利天下即将亮相第21届(顺德)家电电源与智能控制技术研讨会
  • 确保连接器后壳高性能互连的完整性
  • Go-zero:JWT鉴权方式
  • 车载刷写架构 --- 刷写流程中重复擦除同一地址的问题分析
  • 【MySQL】索引事务
  • 把城市变成智能生命体,智慧城市的神奇进化
  • Android开发案例——简单计算器