问题标签 [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.
python - Python 3 中的模幂运算实现
基本上这是一个家庭作业问题。我应该在 Python3 中实现这两个伪代码算法。我做错了什么,我不知道是什么(看起来这应该很简单,所以我不确定我在哪里/哪里搞砸了。这可能是我的算法或我缺乏 Python 经验。我我不确定是哪个。)。
请告诉我我做错了什么,不要发布任何代码。如果我得到答案的代码,我会被盯上抄袭(我非常不想要)。
第一种算法(基础扩展):
p>第二种算法(模扩展):
无论如何看起来很简单,这是我在 Python3 中实现的(我请求所有 Python 程序员的原谅,这对我来说是一种非常新的语言)
这似乎应该可行,但是当我尝试解决 7 644 mod 645 时,我得到的答案是 79,但正确的答案应该是 436。
如果有人能指出我的错误而不给我任何代码,我将非常感激。
c - 使用模数计算
我正在解决一个问题:用户输入 3 个树高以及树高限制。然后程序计算要移除的树的数量。
样本输入:
样本输出:
这对我来说通常不会太糟糕,尽管我仍然是初学者,但问题是,我将在没有 if 语句的情况下计算它。我必须使用模数来计算。我花了很长时间研究和尝试不同的东西,但我似乎无法得到它?有任何想法吗?
python - 使用扩展欧几里得算法创建 RSA 私钥
这是我在学校做的作业。我无法生成私钥。我的主要问题是理解我的方程之间的关系。要设置所有内容,我们有:
从这里我们得到 n ( phi(n)
) 的总和等于 3120,现在我们可以选择素数 e;其中 1 < e < 3120
好吧,很简单。
对于我的任务,我们已经意识到d = 2753
,但是我仍然需要能够任意生成这个值。
现在这是我遇到麻烦的地方。我一直在阅读维基百科以了解某些地方没有联系。我知道我需要找到我们的私人指数的模乘逆。e (mod phi(n))
d
阅读维基百科告诉我们找到使用扩展欧几里得算法所需的 mmi 。我在python中实现了如下算法:
这就是我迷路的地方。据我现在的理解,等式ax + bx = gcd(a, b) = 1
是相同的e*x + phi(n)*y = gcd(e, phi(n)) = 1
。所以我们打电话egcd(e, phi(n))
,现在我得到[-367, 2]
了我的 x 和 y。
从这里我真的不知道去哪里。我读过这个类似的问题,我看到发生了一些替换,但我不明白这些数字与我得到的答案或我开始使用的值有什么关系。有人可以务实地向我解释我需要从这里做什么吗?(当我务实地说,我的意思是没有实际代码。伪代码很好,但如果我得到实际代码,我将无法在没有抄袭作业的情况下学习,这是一个很大的禁忌)。
与往常一样,我们真诚地感谢任何帮助。感谢大家!
(是的,我看过这些:RSA: Private key calculation with Extended Euclidean Algorithm and In RSA encryption, how do I find d, given p, q, e and c?)
c++ - C++ GMP:mpq_t 和 mpf_t 有什么区别 >
我正在尝试决定将哪个与 GMP 的模块化反函数一起使用,但我似乎无法找到 mpq_t 和 mpf_t 之间的区别。GMP手册提到
— 函数:void mpz_set_q (mpz_t rop, const mpq_t op)
— 函数:void mpz_set_f (mpz_t rop, const mpf_t op)
当它谈到初始化它们时。任何人都可以对此有所了解吗?mpf_t 是否可以处理浮点数?(如果是这样,mpq_t 处理什么?)
c++ - 计算 n 其中 a^n mod m = 1?
计算满足方程的第一个 n 的最快方法是什么
a^n 模 m = 1
这里 a,n,m 可以是素数或复合模:是模运算符
c++ - 反模的奇怪行为
我编写了以下代码来计算 n!模 p...鉴于 n 和 p 很接近...但它以一种相当有趣的方式运行,无法找出错误..某处有一些溢出..约束是1 < P <= 2*10^9
1 <= N <= 2*10^9 虽然它在少数情况下运行良好......可能是什么错误。我用过
和p
素数一样……和威尔逊定理(p-1)! mod p = p-1
c - 二的一些大数的幂
谁能告诉我如何在 C 中找到 (2^101100111000)%1000000007 ?有一个问题,我们必须将一个数字转换为二进制(1<=N<=600000)并找到 2^(N 的二进制表示)模 1000000007。
algorithm - 模运算的从右到左二进制方法的解释?
我一直在研究这个来自大量模数的维基百科的链接,这是伪代码。
我不明白 wiki 中给出的解释。为什么我必须检查 exp%2 是偶数还是奇数。还有我为什么要做这三个操作?
c - 如何使用使用 128 位二进制和 4 位多项式的 C 语言编写模块化运算?
假设我有:(数据)mod(多项式)
1110 0101 型号 1001
我知道我需要将多项式移到数据的最左边并执行 XOR 操作。
1110 0101
1001
我会得到一个结果
0111 0101
然后我需要设置多项式以在结果中找到下一个“1”并将多项式移动到该位置并执行下一个异或运算,并重复这些步骤直到我得到余数。
所以,我知道我需要将我的数据复制到一个数组并使用该数组我可以进行移位并使用 AND 运算符并将数据的第一位与多项式的第一位进行比较,如果我得到结果'1' 然后我就会知道我可以将多项式移动到那个位置。
这是我的代码片段:
我很确定我的代码不完整,但我不确定在哪里,有人可以帮助我吗?
我再次重做我的代码,这会更好吗?