算法的详解

扯了一大顿,终于引出了今天文章的主角,前面讲到的两个算法,第一个就是蒙哥马利乘模,第二个就是蒙哥马利约减。下面我们来讲这两个算法的详解。

正如前面提到的蒙哥马利算法的三个特性之一是,不是基于普通的整数表示法,而是基于蒙哥马利表示法。什么是蒙哥马利表示法呢,其实也很简单,上面我们提到,要让(x1⋅y1) (mod 667)转变成(x2⋅y2)/1000 (mod 667)这种形式,我们需要将输入参数变成(x⋅1000)和(y⋅1000),而不是x和y本身,而(x⋅1000)和(y⋅1000) 其实就是蒙哥马利表示法。

所以我们先定义几个概念:

蒙哥马利参数

给定一个N,N在b进制(例如,二进制时,b=2)下共有l位,gcd(N,b)=1,先预计算以下几个值(这就是前面提到的特性之一,需要预计算):

ρ=bk 指定一个最小的k,使得bk》N

ω=−N−1(mod ρ)

这两个参数是做什么用的呢,你对照前面的演变过程可以猜到ρ 就是前面演变中的1000,而ω 则是用来计算前面提到的u的。

蒙哥马利表示法

对于x,0≤x≤N−1,x的蒙哥马利表示法表示为x=x⋅ρ (mod N)

蒙哥马利约减

蒙哥马利约减的定义如下

给定一些整数t,蒙哥马利约减的计算结果是t⋅ρ−1 (mod N)

蒙哥马利约减的算法可表示为

蒙哥马利约减可以算作是下面要说的蒙哥马利模乘当x=1时的一种特殊形式,。同时它又是蒙哥马利乘模要用到的一部分,这在下一部分讲蒙哥马利乘模的时候有讲到。

蒙哥马利约减可以用来计算某个值得取模操作,比如我们要计算m(mod N),只需要将m

的蒙哥马利表示法m⋅ρ作为参数,带入蒙哥马利约减,则计算结果就是m(mod N)。

蒙哥马利java算法_算法详解 - 蒙哥马利算法的概念与原理相关推荐

  1. 【算法知识】详解直接插入排序算法

    前言 已发布: [算法知识]详解选择冒泡算法 [算法知识]详解选择排序算法 在玩扑克牌的时候,我们抽到一张牌的时候,都是将它插入到当前手中牌的合适位置的. 如下图: (上图来自算法导论) 直接插入排序 ...

  2. 【算法知识】详解希尔排序算法

    前言 已发布: [算法知识]详解选择冒泡算法 [算法知识]详解选择排序算法 [算法知识]详解插入排序算法 当待插入元素是一个很小(当需求是从小到大排序时,从大到小排序时此处为很大)直接插入排序需要移动 ...

  3. java阴阳师抽卡算法_阴阳师详解新的抽卡机制 全图鉴和SP获取更加简单

    原标题:阴阳师详解新的抽卡机制 全图鉴和SP获取更加简单 阴阳师随着大岳丸活动的临近,马上大家就要再次进入抽卡的热潮中了,而这次的新SSR大岳丸的获取,又一次更新了新的抽卡机制,本次就带来新抽卡机制详 ...

  4. java堆算法,Java 基本功04-JVM-Java堆详解和GC算法

    JVM GC 机制 1. 在此之前需要了解相关概念: 1.1 Java 堆内存: 在 HotSpot JVM 实现中 Heap 内存被"分代"管理. JVM 的内存首先被分割成两部 ...

  5. [C语言] 单向链表的构建以及翻转算法_图文详解(附双向链表构建代码)

    [C语言]单向链表的构建以及翻转算法 一.基本概念 单向链表的链接方向是单向的,其中每个结点都有指针成员变量指向链表中的下一个结点,访问链表时要从头节点(带头节点的链表)或存储首个数据的节点(不带头节 ...

  6. 【算法知识】详解选择排序算法

    基本思想 选择排序的思想是:      给定一个数组arr,其长度为n;         第一次从 arr[0] 到 arr[n-1] 中选取一个最值(按照需求,可以是最大值,可以是最小值,下同)与a ...

  7. 【算法知识】详解堆排序算法

    点击蓝色字关注我们! 什么是堆 「堆」首先是一个完全二叉树,「堆」分为「大顶堆」和「小顶堆」: 「大顶堆」 : 每个节点的值大于或等于其左右孩子节点的值,称为大顶堆. 「小顶堆」同理就是每个节点的值小 ...

  8. 【算法知识】详解基数排序算法

    已发布: [算法知识]详解选择冒泡算法 [算法知识]详解选择排序算法 [算法知识]详解插入排序算法 [算法知识]详解快速排序算法 [算法知识]详解归并排序算法 基本思想 基数排序的思想是将整数按位数切 ...

  9. 【算法知识】详解归并排序算法

    已发布: [算法知识]详解选择冒泡算法 [算法知识]详解选择排序算法 [算法知识]详解插入排序算法 [算法知识]详解快速排序算法 基本思想 归并排序的基本思想是: 先将序列一次次分成子序列,直到子序列 ...

  10. 【算法知识】详解快速排序算法

    基本思想 已发布: [算法知识]详解选择冒泡算法 [算法知识]详解选择排序算法 [算法知识]详解插入排序算法 本文的思路是以从小到大为例讲的. 快速排序的基本思想是任取待排序序列的一个元素作为中心元素 ...

最新文章

  1. 2020-10-26如何在Amazon AWS上设置一台免费Linux云主机
  2. 计算机视觉实习岗面试准备(一.基础知识)
  3. web项目_学生证管理系统
  4. 59. 螺旋矩阵 II(模拟)
  5. 7.18 collection random os sys等模块
  6. C/C++课程设计 之职工管理系统
  7. 日语学习-多邻国-关卡1-家居
  8. 华为Mate X供货还没跟上,Mate Xs就要来了,余承东亲自确认
  9. python爬虫案例-乌托家家具公司数据爬取
  10. 20200217:下一个排列(leetcode31)
  11. 最全的java手机游戏免费下载基地,手慢无
  12. 陆军装备环境可靠性试验|GJB150A-2009
  13. 汽车电子:下一个苹果产业链
  14. resin 系统日志_resin学习随笔
  15. Winform自动升级系统的设计与实现(源码)
  16. RESTful API入门学习笔记
  17. 第三方INF不包含数字签名信息
  18. 百度地图api实现轨迹运动效果
  19. 前端开发需要学什么?
  20. MySQL 之高级命令

热门文章

  1. 函数进阶之生成器和迭代器
  2. jsjq面试笔记(下)
  3. python接口自动化(十六)--参数关联接口后传(详解)
  4. linux编译带pgm的zmq,ZeroMQ接口函数之 :zmq_pgm – ØMQ 使用PGM 进行可靠的多路传输...
  5. 服务器系统2022安装wsl2,手把手教你踩坑:老白的Docker for Windows安装初探WSL 2 backend...
  6. html5 原生 弹窗,HTML5 Popmotion.js实现的弹窗控件
  7. python for语句_从零开始py个thon3:循环语句(1)
  8. 血脂测试软件,医院检查血脂一般用什么仪器
  9. 数据丢包怎么修复_网络丢包率如何解决
  10. 若依启动sentinel教程