计算 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 是一个素数,所以 a
p-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的主要内容,如果未能解决你的问题,请参考以下文章