使用分数的模块化算术

时间:2015-09-05 23:45:02

标签: modulo

我使用整数和分数mod 10的乘法来解决这个加密问题。

以下是等式:

7 * (4/11) mod 10 =?

我知道我应该将它转换为整数,因为mod运算符不适用于分数,但我无法弄清楚这个。显然,

7 * (4/11) = 28/11,

但是我不能得到一个分数的mod 10。教练想要确切的答案,而不是小数。任何帮助将不胜感激!

5 个答案:

答案 0 :(得分:4)

点击此处:Is it possible to do modulo of a fraction上的“math.stackexchange.com”。

  

定义模块化功能的一种自然方式是

     

a(mod b)= a - b⌊a/b⌋

     

其中⌊⋅⌋表示floor function。这是Graham,Knuth,Patashnik在有影响力的书Concrete Mathematics中使用的方法。

     

这将给你1/2(mod3)= 1/2。

要解决您的问题,您有a = 7 * (4/11) = 28/11b = 10

a / b =(28/11)/ 10 = 0.25454545 ...

⌊a/b⌋ = 0

b ⌊a/b⌋ = 0 * 0 = 0

a - b ⌊a/b⌋ = 28/11 - 0 = 28/11

这意味着你的答案是28/11。

Wolfram Alpha agrees with me并将28/11作为完全结果。 Google也同意,但是给它一个小数,2.54545454 .....

分数 完全答案,而不是小数。

答案 1 :(得分:4)

8

8确实是正确答案。

7*4/11 mod 10表示我们正在查看7*4*x mod 10,其中x是11模10的模逆,这意味着11*x mod 10 = 1。 这适用于x=111*1 mod 10 = 1

因此7*4*x mod 10变为7*4*1 mod 10 28 mod 10 = 8

答案 2 :(得分:1)

我可以推测符号是错误的,并且整个表达式应该在每个中间阶段在模型10中进行评估。由于(11 mod 1)是1,所以答案是(7 * 4)mod 10 = 8.

想象一个只支持那些数字的计算器。

我不是说这是正确的答案,我同意28/11是给出的正确答案,但我试图进入教授的头脑。这在密码学中很常见,其中每个计算都是在mod 2 ^ 256左右执行。

答案 3 :(得分:1)

原始问题可能应该是这样写的,因为它有不同的含义。 When the (mod 10) is written at the end,这意味着每个术语都使用隐含的frameInterval操作进行评估。

\sqrt{foo}

这个问题有点奇怪,因为10的模数值不是通用的,因为它不是素数。例如,由于未定义mod 10,因此无法评估以下内容,因为2和10不是互质的。

\sqrt{foo}

答案 4 :(得分:0)

使用Python:

from fractions import Fraction
from math import fmod

print (fmod(Fraction(28, 11), 10))

结果将是2.545454545454。所以我猜8是错的。