modular-arithmetic相关内容

模块化算法和 NTT(有限域 DFT)优化

我想使用 NTT 进行快速平方(请参阅快速 bignum 平方计算),但即使对于非常大的数字……超过 12000 位. 所以我的问题是: 有没有办法优化我的 NTT 转换?我并不是要通过并行(线程)来加速它;这只是低级层. 有没有办法加快我的模块化算术的速度? 这是我在 C++ 中为 NTT 编写的(已经优化的)源代码(它是完整的并且 100% 在 C++ 中工作,不需要第三方 ..
发布时间:2021-12-01 15:49:06 C/C++开发

Codechef 问题给定整数 N 和 M,找出有序对 (a,b) 的数量,使得 1≤a

到目前为止我所做的就是这些我正在尝试以更短的时间优化代码.但它不起作用. for _ in range(int(input())):n, m = map(int, input().split())计数 = 0对于范围内的 i (1, n+1):对于范围内的 j (1, n+1):如果我<j 我尝试的另一种方法: if i 两个条件都给出了正确的结果.但显示超出时间限制 我该怎么办 ..

c 代码:防止模块操作中的超大模块溢出(靠近溢出阈值的模块)

在我的 c 代码中,我必须执行一系列递归模块化操作.特别是我必须执行像 (A*B)modC 这样的操作,C~2^126 和 A,B,原则上,可能是非常大的数字(从 0 到 2^128 - 1)(我与128 位 unsigned __int128 变量). 问题是如何在乘法过程中执行模块.我需要这个,因为如果在乘法之后执行模块,我可能会在乘法期间超过 2^128(如果 A 和 B 非常大)并破坏连 ..
发布时间:2021-06-03 19:15:10 其他开发

简化模块化幂运算C ++

我正在尝试为RSA加密系统编写解密功能,对于非常很小的数字,一切似乎都工作正常,但是有时输出不正确(我认为原因是可能是浮点错误或某种堆栈溢出. 导致我出现问题的过程可以简化为(11 ^ 23)mod 187,但是如果有人希望看到它,我将提供完整的代码.我知道答案应该是88,因为这是西蒙·辛格(Simon Singh)博士在“密码本"附录J中使用的示例(我也使用Wolfram Alpha进行了 ..
发布时间:2021-04-19 20:28:32 C/C++开发

模块化操作(%)提供错误的输出

使用函数 getNextIdx ,我想为数组接收一个新索引,该索引取决于当前索引和该索引处的数组的值. 我希望函数通过将当前索引与该索引处的数组值相加,以数组的大小为模,来返回新索引. #include使用命名空间std;int getNextIdx(int currentIdx,vector数组){int jump =数组[currentIdx];int n ..
发布时间:2021-04-19 19:46:24 C/C++开发

模幂C ++的问题

我正在尝试对大值(最多64位)执行模幂运算,并为此编写了以下函数: uint64_t模块Exp(uint64_t num,uint64_t exp,uint64_t mod){字符串expBits = bitset 64(exp).to_string();expBits = expBits.substr(expBits.find("1")+ 1);字符串操作=“";uint64_t resul ..
发布时间:2021-04-14 19:21:40 C/C++开发

RSA密码系统的Montgomery模块化乘法的最终减法

我对应该如何绕过 radix- 2蒙哥马利模数乘法,用于模幂运算.以下两篇论文提出了绕开减法运算的条件. 没有最终结论的蒙哥马利指数 减法:改进结果 蒙哥马利乘法不需要最终 减法 我不完全了解“预处理和后处理"的要求,以消除在蒙哥马利乘法结束时重复减去模数的需求. 在阅读了以上论文后,我的理解是,要消除最终的减法,您必须: 将每个输入操作数零扩展为两个模幂 e.g. ..

使用模块化幂运算,此脚本能否具有更好的性能?

def f(a, b, c): return ((a ** b)-1) // c % b 此脚本可以某种方式更快吗? (我一直在寻找具有模幂的东西): pow(a, b, c) == a ** b % c ,但是上面的脚本似乎不是那样完善的.有谁知道一种加快上述脚本速度的方法?预先感谢. 编辑: 第二个脚本与第一个脚本完全不同,它只是用来说明我所考虑的优化类型. ..
发布时间:2020-06-14 18:50:56 Python

如何实现模幂运算?

我正在尝试计算如下内容:a ^ b mod c,其中所有三个数字都很大。 我尝试过的事情: Python的pow()函数需要花费数小时,但尚未产生结果。 (如果有人可以告诉我它是如何实现的,将非常有帮助!) 我实现的从右到左的二进制方法,用O(log e)时间,大约需要30到40个小时(不想等待那么长时间)。 各种递归方法都会产生细分错误(在我更改了递归限制) 我可以 ..
发布时间:2020-06-03 21:41:21 Python

从右到左二进制运算法则的解释?

我一直在研究大量模数维基百科的链接,这是伪代码。 functionmodule_pow(基,指数,模) 结果:= 1 而指数> 0 if(指数mod 2 == 1): 结果:=(结果*基数)mod模量 指数:=指数> 1 base =(base * base)mod模数 返回结果 I不理解wiki中给出的解释。为什么我必须检查exp%2是偶数还是奇数。还有为什么 ..
发布时间:2020-06-03 20:58:42 其他开发

Sympy:在有限域中求解矩阵

对于我的项目,我需要在给定矩阵Y和K的情况下求解矩阵X.(XY = K)每个矩阵的元素必须是对256位随机质数求模的整数.解决这个问题的第一个尝试是使用SymPy的mod_inv(n)函数.问题是我的矩阵大小为30的内存用完了.我的下一个想法是执行矩阵分解,因为这样可能减轻了内存的负担.但是,SymPy似乎不包含能够找到以模为模的矩阵的求解器.我可以使用任何解决方法或自制代码吗? 解决方案 ..
发布时间:2020-05-07 18:48:44 Python

如何计算x ^ y mod z?

我想知道如何计算x ^ y mod z. x和y非常大(无法容纳64位整数),而z将容纳64位整数. 一件事不给出答案,例如x ^ y mod z与(x mod z)^ y mod z相同. 解决方案 以下是标准方法,采用伪代码: function powerMod(b, e, m) x := 1 while e > 0 if e % 2 == 1 ..
发布时间:2020-05-06 11:48:36 其他开发

如何从残数系统转换为混合基数系统?

我了解残数系统的概念和混合基数系统,但是我很难获得在简单的案例研究中可以使用的任何转换方法 我从Knuth的计算机编程艺术开始,但是在转换理论上有点过分了,一旦提到Euler,我就迷路了.维基百科对此主题有不错的部分,我尝试了我在此处(PDF),我在此处浓缩了相关部分,但我不理解乘法逆和它们的表示法.具体来说,y_2 = |(3-19)|(1/31)| _7 | _7 = | 5 * 5 | ..
发布时间:2020-05-06 11:09:47 其他开发

高效地在JavaScript中添加十六进制字符串

在JavaScript中,我有两个包含十六进制数字的变量作为字符串,每个都是。例如: var a ='a3bc', b''1d0f'; 现在我想添加它们(所以结果应该是'c0cb “)。为了让事情变得更容易一些,让我们对此加以一些限制: 数字总是由相同的数字组成(即,这些字符串的长度是相同的。) 如果需要,这些数字前缀为 0 s,所以它会是'001a ..
发布时间:2018-06-07 16:59:11 前端开发

蒙哥马利乘法VHDL实现

我试图在这种情况下创建一个模运算操作: x * y mod n 至于我读的最快的方法是使用蒙哥马利乘法,但我不能理解 有人能够做到这一点,或者有任何图书馆可以使用它吗? 解决方案 可以找到基本的移位和添加模乘法此处作为此开放核心项目。 这里是另一个使用蒙哥马利乘法的项目。 ..

计算floor(pow(2,n)/ 10)mod 10 - pow的数字之和(2,n)

这也是一个数学相关的问题,但我想在C ++中实现...所以,我有一个数字形式 2 ^ n 并且我必须计算其数字的总和(以10为底; P)。我的想法是用以下公式计算它: sum =(2 ^ n mod 10)+(floor n / 10)mod 10)+(floor(2 ^ n / 100)mod 10)+ ... 其所有数字: floor(n / floor(log2(1 ..
发布时间:2016-10-30 20:09:28 C/C++开发