我卡在使用整數乘法和一個分數國防部10模塊化使用算術分數
這裏這個密碼問題是方程:
7 * (4/11) mod 10 =?
我知道我應該轉換這是一個整數,因爲mod運算符不能與分數一起使用,但我無法弄清楚這一點。顯然,
7 * (4/11) = 28/11,
但我不能得到一個分數的mod 10。教練想要確切的答案,而不是小數。任何幫助將不勝感激!
我卡在使用整數乘法和一個分數國防部10模塊化使用算術分數
這裏這個密碼問題是方程:
7 * (4/11) mod 10 =?
我知道我應該轉換這是一個整數,因爲mod運算符不能與分數一起使用,但我無法弄清楚這一點。顯然,
7 * (4/11) = 28/11,
但我不能得到一個分數的mod 10。教練想要確切的答案,而不是小數。任何幫助將不勝感激!
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
看看這裏:「Is it possible to do modulo of a fraction」在math.stackexchange.com。以限定所述模塊化功能
一種自然的方式是
一個(MOD B)=一 - 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 .....
一小部分是的確切的答案而不是一個小數。
我也得到28/11,但我的教授聲稱這是錯誤的。 – ComputerScientist123
你的教授出於興趣而得到什麼答案?除非它是'2 6/11'(= 28/11寫成整數和[適當的分數](https://en.wikipedia.org/wiki/Fraction_(mathematics)#Proper_and_improper_fractions))我不確定他能得到什麼答案。 –
我可以推測符號是錯誤的,並且整個表達式應該在mod 10中在每個中間階段進行評估。由於(11 mod 1)爲1,則答案爲(7 * 4)mod 10 = 8.
想象一下僅支持個位數的計算器。
我不是說這是正確的答案,我同意28/11是正確的答案,但我正在試圖進入教授的頭。這在密碼學中很常見,每個計算都執行mod 2^256左右。
謝謝大家。我很感激幫助。我會回覆教練想要的確切答案。 – ComputerScientist123
這是怎麼了原來的問題可能應該被寫,因爲這有不同的含義。 When the (mod 10)
is written at the end,這意味着每個術語都使用隱含的mod 10
操作進行評估。
的問題是有點不可思議,因爲10模數值是不通用的,因爲它不是素數。例如,不能評估以下內容,因爲1/2 mod 10
未定義,因爲2和10不是互質。
所以,這裏是從教練的正確答案。我不知道他是怎麼想出了這個:
7 4/11 mod 10 = ((7 4) mod 10)(11−1 mod 10) mod 10
= (28 mod 10)(1 mod 10) mod 10
= (8)(1) mod 10
= 8 mod 10
使用Python:
from fractions import Fraction
from math import fmod
print (fmod(Fraction(28, 11), 10))
結果將是2.545454545454。所以我猜8是錯的。
你能解釋你做了什麼以及你是如何找到你的解決方案的 – MZaragoza
您需要的第一件事是定義x mod 10的含義,如果x不是整數。如果'x'和'y'是整數,則一個定義將是'x/y mod 10'等於'[x mod(10 * y)]/y'(這將是一個有理數值)。 – Peter