问题标签 [modular-arithmetic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
14630 浏览

java - Java模块化划分

我正在做一些纠错,我需要在 Java 中的 mod 11 下除两位数。

现在我知道了,通过使用模块化计算器:

问题在于让 Java 计算它。在 Java 中:

我知道 Java 在技术上无法执行模块化操作,我的一部分人认为我要么需要以某种方式计算逆,要么使用数组来存储可能的输出值。

0 投票
1 回答
1517 浏览

c - 大数的模乘法

我需要找到一种有效的算法来进行三个数字的模乘。

换句话说,有没有办法在 C 中找到它?

0 投票
2 回答
1666 浏览

c++ - 优化模运算的代码

我正在尝试计算下面的大数表达式。

N!/((N/2)!(N/2)!)

由于这个表达式的值会很大,我只需要这个表达式的值取模一些素数。假设这个表达式的值为x并且我选择素数1000000007;我正在寻找x % 1000000007

这是我的代码。

但即使如此多的优化对于较大的 N 值也是失败的。例如,如果 N 为 50,则正确的输出是605552882,但这给了我132924730。如何进一步优化它以获得正确的输出?

注意:我只认为 N 是偶数。

0 投票
1 回答
1531 浏览

c - 具体的模乘算法

我有 3 个大的 64 位数字:A、B 和 C。我想计算:

考虑到我的寄存器是 64 位,即写入a * b实际上产生 (A x B) mod 2⁶⁴。

最好的方法是什么?我正在用 C 编码,但在这种情况下,我认为该语言不相关。


在对指向此解决方案的评论表示赞成后:

让我具体一点:这不是一个解决方案,因为 ((a % c) * (b % c)) 可能仍然大于 2⁶⁴,并且寄存器仍然会溢出并给我错误的答案。我会:

(((A mod C) x (B mod C)) mod 2⁶⁴) mod C

0 投票
1 回答
1931 浏览

math - 蒙哥马利乘法VHDL实现

在这种情况下,我试图创建一个模块化算术运算:

据我所知,最快的方法是使用蒙哥马利乘法,但我无法理解其他方法实际上是如何使用 VHDL 在硬件中实现它的。

有人能够做到这一点或有任何图书馆可以让我使用它吗?

0 投票
1 回答
701 浏览

algorithm - 找到与 N 互质的某个数的修正阶乘 N

给定两个数N和,p让是除以k的最大幂。互质数也是如此。pp^kN!d = N!/(p^k)dp

我如何找到d mod p?直接迭代将是不切实际的,因为N!在高时会非常N高。需要更有效的算法来找到表达式。

0 投票
2 回答
2708 浏览

python - Python中的模运算

来自 Project Euler 的问题 48 描述:

系列,1^1 + 2^2 + 3^3 + ... + 10^10 = 10405071317。找到系列的最后十位,1^1 + 2^2 + 3^3 + ... + 1000^1000。

我刚刚在 Python 中使用单线解决了这个问题:

我几乎立即就这样做了,因为我记得除法 mod n 在 Python 中非常快。但我仍然不明白这在幕后是如何工作的(Python 做了哪些优化?)以及为什么这么快。

你能给我解释一下吗?该mod 10**10操作是否针对列表推导的每次迭代而不是整个总和进行了优化?

0 投票
1 回答
820 浏览

math - 如何从余数系统转换为混合基数系统?

我了解残数系统的概念和混合基数系统的概念,但我很难让我发现的任何转换方法在一个简单的案例研究中起作用。

我从 Knuth 的《计算机编程艺术》开始,但是这对转换的理论有点过多,一旦提到欧拉,我就迷路了。维基百科有一个关于这个主题的好部分,我在这里这里尝试过,但两次我都无法回到我开始时的号码。

我在这里找到了一篇好文章(PDF),我在此处浓缩了相关部分,但我不了解乘法逆元及其符号。具体来说,如何 y_2 = |(3 - 19)|(1/31)|_7|_7 = |5 * 5|_7 特别是如何 |1/31|_7 = 5

0 投票
2 回答
518 浏览

c++ - 组合 ECDSA 密钥

如何将两个 ECDSA 私钥/公钥对组合成一个?我知道它是通过 openssl 中的模块化添加完成的,我只是不明白它是如何工作的。谁能给我解释一下?

0 投票
4 回答
53167 浏览

java - 两个整数的模除法

我不断收到错误消息“未定义参数类型整数、整数的运算符 %”我不太确定为什么会这样。我认为由于模除法不能返回小数,因此具有整数值就可以了。

这发生在我正在创建的程序的方法中。代码如下:

该方法未完成,但错误发生在

任何帮助或建议将不胜感激。