- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
作为我自己的练习,我正在实现 Miller-Rabin 测试。 (通过 SICP 工作)。我理解费马小定理并且能够成功地实现它。我在 Miller-Rabin 测试中被绊倒的部分是这个“1 mod n”业务。 1 mod n(n 是某个随机整数)不是总是 1 吗?所以我对“1模n的非平凡平方根”可能是什么感到困惑,因为在我看来“1模n”在处理整数值时总是1。我错过了什么?
最佳答案
1 全等于 9 mod 8,因此 3 是 1 mod 8 的非平凡平方根。
您使用的不是单个数字,而是等价集。 [m]n
是所有数字的集合 x
这样 x
与 m
一致国防部 n
.对这个集合的任何元素求平方的任何东西都是 m
的平方根模 n
.
给定任何n
,我们有整数模 n 的集合,我们可以写成 Zn
.这是一组(一组)[1]n
, [2]n
, ... , [n]n
.每个整数都位于其中一个集合中。我们可以通过 [a]n + [b]n = [a + b]n
定义这个集合的加法和乘法乘法也是如此。所以 [1]n
的平方根是 [b]n
的(n 个元素)这样 [b*b]n = [1]n
.
但实际上,我们可以将 m
混为一谈与 [m]n
通常选择唯一元素,m'
的 [m]n
这样 0 <= m' < n
作为我们的“代表”元素:这就是我们通常认为的 m mod n
.但重要的是要记住,正如数学家所说,我们正在“滥用符号”。
这里有一些(非惯用的)python 代码,因为我没有方案解释器 ATM:
>>> def roots_of_unity(n):
... roots = []
... for i in range(n):
... if i**2 % n == 1:
... roots.append(i)
... return roots
...
>>> roots_of_unity(4)
[1, 3]
>>> roots_of_unity(8)
[1, 3, 5, 7]
>>> roots_of_unity(9)
[1, 8]
所以,特别是(看最后一个例子),17 是单位根模 9。实际上,17^2 = 289 和 289 % 9 = 1。回到我们之前的符号 [8]9 = [17]9
和 ([17]9)^2 = [1]9
关于algorithm - 对 Miller-Rabin 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3733384/
突然遇到两种Miller Rabin素性检验方法。其中一个uses randoms和另一个 does not use randoms . 第二个里面有隐藏的随机生成还是什么?谢谢。 最佳答案 第二个是
我正在实现 Wikipedia's Miller-Rabin algorithm但似乎没有得到甚至模糊恰当的结果。 7, 11, 19, 23 等被报道为复合 Material 。事实上,当 k>12
我很清楚单个 Miller-Rabin 测试以三次对数时间运行。我知道蒙哥马利模幂和 GNFS 并且我不会问任何那些奇特的理论。我想知道的是,在特征硬件(例如,2.2 GHz Opteron 或某某显
我正在尝试制作 RSA 算法。为此,我需要 rabin-miller+witness+modular exponentiation(至少我需要使用它)。当我生成随机数以检查 rabin miller
我有 Miller-Rabin 实现 def MillerRabin(n,a): e = 0 q = n-1 while q % 2 == 0: e +=
我是一名计算机科学专业的学生,我正在自学算法类(class)。 在类(class)中我看到了这个问题: Show an efficient randomized algorithm to fact
我需要每天拆分包含 50K+ 列的巨大 (>1 Gb) CSV 文件。 我找到了Miller作为此类任务的有趣且高性能的工具。 但我被米勒的文档困住了。 如何将一个 CSV 拆分为 N 个较小的 CS
我仍然是一个新手编码员,本着努力提高我的技能的精神,我正在开发一个 Miller-Rabin java 程序,该程序似乎在大多数情况下都能工作。然而,有一些数字会导致程序连续运行(至少几分钟)。 其中
我正在学习 Miller Rabin,我正在查看来自 https://en.wikibooks.org/wiki/Algorithm_Implementation/Mathematics/Primal
Miller-Rabin test使用 k 个随机整数来测试素数。 根据 CLRS,第 3rd 版,第 971 页: Theorem 31.38 If n is an odd composite nu
我是 Scheme 新手。我尝试并使用 PLT Scheme 实现了 Rabin-Miller 算法的概率变体。我知道这是概率性的,但大多数时候我都得到了错误的结果。我已经使用 C 实现了同样的事情,
我最近遇到了这段 Rabin-Miller 算法的代码,如描述的那样 here : from random import randint def _bits_of_n(n):
作为我自己的练习,我正在实现 Miller-Rabin 测试。 (通过 SICP 工作)。我理解费马小定理并且能够成功地实现它。我在 Miller-Rabin 测试中被绊倒的部分是这个“1 mod n
我正在尝试使用确定性 Miller-Rabin 算法实现素数检查功能,但结果并不总是正确的:在检查前 1,000,000 个数字时,它只找到 78,495 而不是 78,498。 这是使用 [2, 7
我知道 Miller–Rabin primality test是概率的。但是我想将它用于 programming task没有错误的余地。 如果输入数字是 64 位整数(即 C 中的 long lon
我正在为 Diffie-Hellman 类型的 key p 生成一个 2048 位安全素数,使得 p 和 (p-1)/2 都是素数。 我可以在 p 和 (p-1)/2 上使用多少次 Rabin-Mil
欢迎。我正在尝试实现 MillerRabin 测试以检查给定的大数是否为素数。这是我的代码: public static bool MillerRabinTest(BigInteger number
我正在尝试使用 Park&Miller RNG ran0 1 2 3(3 目前不起作用)在 C++ 中生成伪随机数,来自“C 中的数值配方”。这些生成器可以正常工作,因为它使样本均匀分布在 0 和 1
我一直在尝试实现 the algorithm from wikipedia虽然它从不将合数输出为质数,但它会将大约 75% 的质数输出为合数。 最多 1000 它为我提供了这个素数输出: 3, 5,
我已经实现了 Miller-Rabin 素数测试,并且每个函数似乎都可以单独正常工作。但是,当我尝试通过生成 70 位随机数来找到素数时,我的程序在找到通过 Miller-Rabin 测试(10 步)
我是一名优秀的程序员,十分优秀!