gpt4 book ai didi

algorithm - 求解 RR' - NN' = 1 的欧几里得算法。使用蒙哥马利算法进行模幂运算以在 python 或 Petite Chez 方案中实现费马测试

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:50:18 26 4
gpt4 key购买 nike

这是我使用 Scheme 教授的入门编程类(class)中的个人挑战,但我对 Python 示例同样满意。

我已经在scheme中实现了模幂的二进制方法如下:

(define (pow base expo modu)
(if (zero? expo)
1
(if (even? expo)
(mod (expt (pow base (/ expo 2) modu) 2) modu)
(mod (* base (pow base (sub1 expo) modu)) modu))))

这是必要的,因为 Chez Scheme 没有任何类似于 python 的 pow(base expo modu)的实现。

现在我正在尝试实现解决模乘法的蒙哥马利方法。例如,我有:

Trying to solve:
(a * b) % N
N = 79
a = 61
b = 5
R = 100
a' = (61 * 100) % 79 = 17
b' = (5 * 100) % 79 = 26
RR' - NN' = 1

我正在尝试了解如何解决 RR' - NN' = 1。我意识到 R' 的答案应该是 64,N' 应该是 81,但不明白如何使用欧几里德算法来求解得到这个答案。

最佳答案

扩展欧氏算法为:

(define (euclid x y)
(let loop ((a 1) (b 0) (g x) (u 0) (v 1) (w y))
(if (zero? w) (values a b g)
(let ((q (quotient g w)))
(loop u v w (- a (* q u)) (- b (* q v)) (- g (* q w)))))))

因此,在您的示例中,

> (euclid 79 100)
19
-15
1

您可以在 my blog 阅读更多内容.

关于algorithm - 求解 RR' - NN' = 1 的欧几里得算法。使用蒙哥马利算法进行模幂运算以在 python 或 Petite Chez 方案中实现费马测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13337320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com