编辑-已澄清
我正在尝试使用lagrange和中文余数定理在Java中实现模幂运算。
例如,如果N是55,并且给定了素数5和11,phi是40,那么我知道在55以下,有40个数字互质为N。 ,以5和11为模的几次乘法以及CRT来结合两个结果"
我的问题是如何计算这些数字?我需要将它们放入中国余数定理中以完成计算,但是我想不出一个巧妙的方法来使用phi(n)在N中循环。 N将是一个非常大的数字,至少1024位。我可能在这里走错了路,我是否还需要所有这些素数?
我确实怀疑答案是否与扩展的euclid函数有关,我已经对其进行了编码,因此如果我需要使用它的结果就可以了。
我不明白N以下有多少个数互质为N?因此对我没有太大帮助,我看的数学论文很难理解,总和和乘积类型表示法令我有些困惑。另外,某些答案使用平方根和对数,而BigInteger并不是真正的选择(如果我输入错了,请纠正我)
谁能用简单的英语给我答案?
可以给我看代码,这更多的是学习练习,因为我要提交的答案使用蒙哥马利。 (是的,我知道,很奇怪我可以从数学公式中得出蒙哥马利,但这种拉格朗日加CRT令我完全困惑)
到目前为止,我已经通过一个示例找到了解决方法。质因子是7和5,所以phi 35是24(我有一个正常的Euler上位函数)。
因此,对于N = 55,您需要一种算法,该算法枚举[0..55)范围内某处的40个整数。 对?
是的,但也可能是表示它们是素数的一种方式,我的意思是55没有40素数,因此我不确定phi函数的使用方式。
55具有40个互质数,这是不同的。 要计算所有与N互质的数,只需对[1..N]遍历Euclid GCD算法即可。 如果结果为GDD(a,N)== 1,则a,N为互质
抱歉,我只是对其进行编辑以使其更加清晰。
请参阅此答案以获取解决的示例。 它确切地展示了如何通过对素因子进行模运算并组合结果来对复合模进行模幂运算。
要找到所有与N互质的数字,只需对[1,N]遍历euclid GCD()算法即可。 如果GCD(a,N)== 1,则a,N是互质的
我知道如何计算。 在上面的示例中,phi 55是40。但是如何使用40 phi来创建中国余数定理所需的素因子全等式。
您不需要CRT来找到所有的互质数!