计算 pow(45,60) mod 61

Posted

技术标签:

【中文标题】计算 pow(45,60) mod 61【英文标题】:Calculating pow(45,60) mod 61 【发布时间】:2011-03-18 05:51:36 【问题描述】:

这是一道作业题。

我需要计算 45^60 mod 61。我想知道任何快速的方法可以通过编程或手动方式获得结果,以更快的速度为准。

【问题讨论】:

我认为以编程方式会更快。您可以使用 C POW 函数和 % 运算符来完成工作。 手动?你不必写任何代码?然后问 wolfram alpha wolframalpha.com/input/?i=45^60+mod+61 @Tobias:这绝对行不通。 45^60 大约有 320 位,比任何 double 甚至 long double 都要多。 Calculating pow(a,b) mod n 【参考方案1】:

由于费马小定理,结果将是 1

如果p 是素数。

61 是一个素数,所以 ap-1 除以 p 后,余数为 1。

但是,如果 p 不是素数,则通常的技巧是重复平方。

【讨论】:

+1,但是如果 p 是素数,a is an integer coprime to p 应该跟在后面。 当 p 不是素数且 b 很大时,还有其他定理可用于加速a^b mod p【参考方案2】:
45^60 =
2025^30 = (33*61 + 12)^30 = 12^30 =
144^15 = (2*61 + 22)^15 = 22^15 =
10648^5 = ( 174*61 + 34)^5 = 34^5 =
45435424 = 744843 * 61 + 1 = 1

这里的相等意味着 = (mod 61)

【讨论】:

【参考方案3】:

我会说你最好的选择是使用费马小定理。

Fermat's Little Theorem

其中 p = 61 且 p-1 = 60。

希望有帮助

【讨论】:

【参考方案4】:
45^2         = 2025 = 12
45^4  = 12^2 = 144  = 22
45^8  = 22^2 = 484  = 57
45^16 = 57^2 = 3249 = 16
45^32 = 16^2 = 256  = 12

45^60 = 45^(4+8+16+32) = 22 * 57 * 16 * 12 = 1

【讨论】:

【参考方案5】:

Wolfram 阿尔法

总是有Wolfram Alpha 在手边:D

【讨论】:

以上是关于计算 pow(45,60) mod 61的主要内容,如果未能解决你的问题,请参考以下文章

计算任意根号n的值

计算任意根号n的值

计算任意根号n的值

JavaScript中计算N次方的方法**和math.pow()-讲解

理解这种计算方式 (x^e mod n)

实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。