蒙哥马利java算法_算法详解 - 蒙哥马利算法的概念与原理
算法的详解
扯了一大顿,终于引出了今天文章的主角,前面讲到的两个算法,第一个就是蒙哥马利乘模,第二个就是蒙哥马利约减。下面我们来讲这两个算法的详解。
正如前面提到的蒙哥马利算法的三个特性之一是,不是基于普通的整数表示法,而是基于蒙哥马利表示法。什么是蒙哥马利表示法呢,其实也很简单,上面我们提到,要让(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算法_算法详解 - 蒙哥马利算法的概念与原理相关推荐
- 【算法知识】详解直接插入排序算法
前言 已发布: [算法知识]详解选择冒泡算法 [算法知识]详解选择排序算法 在玩扑克牌的时候,我们抽到一张牌的时候,都是将它插入到当前手中牌的合适位置的. 如下图: (上图来自算法导论) 直接插入排序 ...
- 【算法知识】详解希尔排序算法
前言 已发布: [算法知识]详解选择冒泡算法 [算法知识]详解选择排序算法 [算法知识]详解插入排序算法 当待插入元素是一个很小(当需求是从小到大排序时,从大到小排序时此处为很大)直接插入排序需要移动 ...
- java阴阳师抽卡算法_阴阳师详解新的抽卡机制 全图鉴和SP获取更加简单
原标题:阴阳师详解新的抽卡机制 全图鉴和SP获取更加简单 阴阳师随着大岳丸活动的临近,马上大家就要再次进入抽卡的热潮中了,而这次的新SSR大岳丸的获取,又一次更新了新的抽卡机制,本次就带来新抽卡机制详 ...
- java堆算法,Java 基本功04-JVM-Java堆详解和GC算法
JVM GC 机制 1. 在此之前需要了解相关概念: 1.1 Java 堆内存: 在 HotSpot JVM 实现中 Heap 内存被"分代"管理. JVM 的内存首先被分割成两部 ...
- [C语言] 单向链表的构建以及翻转算法_图文详解(附双向链表构建代码)
[C语言]单向链表的构建以及翻转算法 一.基本概念 单向链表的链接方向是单向的,其中每个结点都有指针成员变量指向链表中的下一个结点,访问链表时要从头节点(带头节点的链表)或存储首个数据的节点(不带头节 ...
- 【算法知识】详解选择排序算法
基本思想 选择排序的思想是: 给定一个数组arr,其长度为n; 第一次从 arr[0] 到 arr[n-1] 中选取一个最值(按照需求,可以是最大值,可以是最小值,下同)与a ...
- 【算法知识】详解堆排序算法
点击蓝色字关注我们! 什么是堆 「堆」首先是一个完全二叉树,「堆」分为「大顶堆」和「小顶堆」: 「大顶堆」 : 每个节点的值大于或等于其左右孩子节点的值,称为大顶堆. 「小顶堆」同理就是每个节点的值小 ...
- 【算法知识】详解基数排序算法
已发布: [算法知识]详解选择冒泡算法 [算法知识]详解选择排序算法 [算法知识]详解插入排序算法 [算法知识]详解快速排序算法 [算法知识]详解归并排序算法 基本思想 基数排序的思想是将整数按位数切 ...
- 【算法知识】详解归并排序算法
已发布: [算法知识]详解选择冒泡算法 [算法知识]详解选择排序算法 [算法知识]详解插入排序算法 [算法知识]详解快速排序算法 基本思想 归并排序的基本思想是: 先将序列一次次分成子序列,直到子序列 ...
- 【算法知识】详解快速排序算法
基本思想 已发布: [算法知识]详解选择冒泡算法 [算法知识]详解选择排序算法 [算法知识]详解插入排序算法 本文的思路是以从小到大为例讲的. 快速排序的基本思想是任取待排序序列的一个元素作为中心元素 ...
最新文章
- 2020-10-26如何在Amazon AWS上设置一台免费Linux云主机
- 计算机视觉实习岗面试准备(一.基础知识)
- web项目_学生证管理系统
- 59. 螺旋矩阵 II(模拟)
- 7.18 collection random os sys等模块
- C/C++课程设计 之职工管理系统
- 日语学习-多邻国-关卡1-家居
- 华为Mate X供货还没跟上,Mate Xs就要来了,余承东亲自确认
- python爬虫案例-乌托家家具公司数据爬取
- 20200217:下一个排列(leetcode31)
- 最全的java手机游戏免费下载基地,手慢无
- 陆军装备环境可靠性试验|GJB150A-2009
- 汽车电子:下一个苹果产业链
- resin 系统日志_resin学习随笔
- Winform自动升级系统的设计与实现(源码)
- RESTful API入门学习笔记
- 第三方INF不包含数字签名信息
- 百度地图api实现轨迹运动效果
- 前端开发需要学什么?
- MySQL 之高级命令
热门文章
- 函数进阶之生成器和迭代器
- jsjq面试笔记(下)
- python接口自动化(十六)--参数关联接口后传(详解)
- linux编译带pgm的zmq,ZeroMQ接口函数之 :zmq_pgm – ØMQ 使用PGM 进行可靠的多路传输...
- 服务器系统2022安装wsl2,手把手教你踩坑:老白的Docker for Windows安装初探WSL 2 backend...
- html5 原生 弹窗,HTML5 Popmotion.js实现的弹窗控件
- python for语句_从零开始py个thon3:循环语句(1)
- 血脂测试软件,医院检查血脂一般用什么仪器
- 数据丢包怎么修复_网络丢包率如何解决
- 若依启动sentinel教程