问题标签 [exponentiation]
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.
java - Java中的模幂运算使用欧拉totient和中国剩余定理
编辑 - 澄清
我正在尝试使用拉格朗日和中国余数定理在 Java 中实现模幂运算。
例如,如果 N 是 55,给定素数 5 和 11,phi 是 40,所以我知道有 40 个数字与低于 55 的 N 互质。我的导师说这样做的方法是“使用拉格朗日定理, 几个模 5 和 11 的乘法和 CRT 结合两个结果"
我的问题是如何计算这些数字?我需要他们将它们放入中国剩余定理中来完成计算,但我想不出一个聪明的方法来使用 phi(n) 循环遍历 N。N 将是一个非常大的数字,至少 1024 位。我可能在这里走错了路,我什至需要所有这些素数吗?
我确实怀疑答案将与扩展的 euclid 函数有关,我已经对其进行了编码,所以如果我需要使用它的结果,那很好。
我不明白N 以下多少个数与 N 互质?所以这对我没有多大帮助,而且我看的数学论文很难理解,总和和乘积类型符号让我有点困惑。此外,一些答案使用平方根和日志,这不是 BigInteger 的真正选项(如果我错了,请纠正我)
谁能用简单的英语给我答案??
可以给我看代码,这更像是一个学习练习,因为我要提交的答案使用蒙哥马利。(是的,我知道,奇怪的是我可以从数学公式中算出蒙哥马利,但这个拉格朗日加 CRT 让我完全困惑)
我已经做到了这一点,通过我找到的一个例子来工作。素数是七和五,所以 35 的 phi 是 24(我有一个工作的欧拉函数)。
algorithm - 欧几里得算法解决 RR' - NN' = 1. 使用蒙哥马利算法进行模幂运算以在 python 或 Petite Chez 方案中实现费马检验
这是我使用 Scheme 教授的入门编程课程中的个人挑战,但我对 Python 示例同样满意。
我已经在方案中实现了模幂的二进制方法,如下所示:
这是必要的,因为 Chez Scheme 没有任何类似于 python 的 pow (base expo modu) 的实现。
现在我正在尝试实现解决模乘的蒙哥马利方法。例如,我有:
我试图了解如何解决 RR' - NN' = 1。我意识到 R' 的答案应该是 64 而 N' 应该是 81,但不明白如何使用欧几里得算法来得到这个答案.
java - 返回大功率 (mod 2^32)
我需要计算出一个非常大的幂模(2^32),即我想要的结果:
在Java中有效地做到这一点有诀窍吗?
还是我坚持在一个循环中进行 n 次迭代?
c++ - C++ 中的模幂运算
我的模幂运算代码有问题,尽管在使用两种不同的伪代码源时写了三遍,但我无法发现问题。我已经阅读了有关 SE 上 C++ 中的模幂运算的其他问题,但这对我没有帮助。这是我的最后一个代码,用我认为更简单但不太理想的方式编写:
prolog - 将递归转换为尾递归?
我正在尝试编写一个谓词,它递归地找到某个数字的 n 次方 [A^n = A * A^(n-1)] 并使用快捷方式 A^(2n) = A^n * A^n。
这是迄今为止的解决方案。
现在我想让这个尾递归。我可以为简单的情况做tail,例如没有捷径的阶乘和幂(通过添加一个累加器),但这很难。
任何帮助深表感谢!
prolog - Prolog中的系列之和
我想使用 Prolog 程序找到一个系列的总和。为此,我编写了以下程序:
我想找到以下系列的总和:
我相信上面的代码是正确的。但是当我运行程序时,它显示输出 "No" 。为什么 ?我已经尝试了很多,但无法获得预期的输出。
c - GMP 中的 base 16 到 base 2^64 的转换
我读了一些十六进制数字,然后我想将它们转换为基数 2^64。不幸的是,由于这个数字不能存储在一个 int 中,似乎 GMP 中没有可以帮助我解决这个问题的函数。
还有另一种我完全想念的方法吗?
(程序是C语言)
javascript - javascript求幂中的数学函数
我在 javascript 中有一些计算,包括求幂。
谁能说一下为什么这句话返回值1???
谢谢
string - 矩阵中的字符串操作:一个维度问题
我正在尝试在 R 中定义一个操作字符串矩阵的函数。
{+,*} 矩阵乘法
两个n 维方阵A和B的 {+,*}-乘积是由以下元素定义的矩阵C: C i,j = Sum k=1,...,n A i,k * B k, Ĵ。
例如,考虑矩阵 M <- matrix(c(a,b,0,0,c,d,0,0,e),3,3)
。那么 M 乘以 M 就是 M <- matrix(c(a^2,a*b+b*c,b*d,0,c^2,c*d+d*e,0,0,e^2),3,3)
。
{c(,),paste0(,)} 矩阵乘法
我想实现的这个操作的规则与前面所说的乘法相同,其中的基本突变是总和应该是一个连接,而乘积应该是一个粘贴。换句话说,我们在前面的公式中找到a+b
,现在输出应该是“c(a,b)”,当我们找到 时a*b
,现在我们应该将其读为paste0(a,b)
。
一些通常的属性必须得到尊重,即分配属性和零元素属性。因此,如果a <- c("q",0,"w")
和b <- c("e")
然后a*b <- c("qe",0,"we")
(我们应该随意忘记 0 元素,将其删除,因为它不会影响计算。
此外,我们正在乘以等维矩阵,因此每个元素 C i,j = Sum k=1,...,n A i,k * B k,j现在被读作 c("A[i,1]B[1,j]",...,"A[i,n]B[n,j]")
。
为了简单起见,让我们认为B始终是一个简单的矩阵,这意味着它的每个元素都是原子字符串,而不是字符串的串联(泛化是后续步骤)。
让我们举个例子。让 A <- matrix(c("a","b",0,0,"c","d",0,0,"e"),3,3)
,然后mult(A,A) = matrix(c("aa",c("ab","bc"),"bd",0,"cc",c("cd","de"),0,0,"ee"),3,3)
和mult(mult(A,A),A) = matrix(c("aaa",c("aab","abc","bcc"),c("abd","bcd","bde"),0,"ccc",c("ccd","cde","dee"),0,0,"eee"),3,3)
。
部分(不工作)实施
考虑作为输入一对 nxn 矩阵M , N,无论是 0 还是字符串数组 c( s 1 , s 2 ,...) 作为i,j个元素。作为输出,我想要一个矩阵MN = M x N,其中乘法的定义与符号乘法类似:
如果M i,则MN i,j = 0 。或N .,j为 0 MN i,j = paste( M i,. , N .,j ) 否则(使用 的分配性质)
paste()
我给出了基本行/列粘贴函数的(错误,未正确检查零)定义为
我无法从这一步转到乘法函数的正确定义,因为我想在矩阵中插入的元素 Mij 的维度不正确。因此我得到一个number of items to replace is not a multiple of replacement length
错误。我目前的实现是:
代码不起作用。我可能可以将矩阵更改为多维数组,但我希望输出可用作进一步乘法的矩阵(例如定义(MxN)xC)。
我能怎么做?
谢谢!
PS您可以使用一个简单的示例矩阵来测试代码
并运行
java - 如何计算 a^(1/n)?
我正在尝试计算a^(1/n)
,其中^
表示取幂。
但是,以下内容:
返回1.0
而不是返回2.0
。
这是为什么?