我使用整数和分数mod 10的乘法来解决这个加密问题。
以下是等式:
7 * (4/11) mod 10 =?
我知道我应该将它转换为整数,因为mod运算符不适用于分数,但我无法弄清楚这个。显然,
7 * (4/11) = 28/11,
但是我不能得到一个分数的mod 10。教练想要确切的答案,而不是小数。任何帮助将不胜感激!
答案 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/11
和b = 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确实是正确答案。
7*4/11 mod 10
表示我们正在查看7*4*x mod 10
,其中x是11模10的模逆,这意味着11*x mod 10 = 1
。
这适用于x=1
(11*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
操作进行评估。
这个问题有点奇怪,因为10的模数值不是通用的,因为它不是素数。例如,由于未定义mod 10
,因此无法评估以下内容,因为2和10不是互质的。
答案 4 :(得分:0)
使用Python:
from fractions import Fraction
from math import fmod
print (fmod(Fraction(28, 11), 10))
结果将是2.545454545454。所以我猜8是错的。