2015-09-05 79 views
4

我卡在使用整數乘法和一個分數國防部10模塊化使用算術分數

這裏這個密碼問題是方程:

7 * (4/11) mod 10 =? 

我知道我應該轉換這是一個整數,因爲mod運算符不能與分數一起使用,但我無法弄清楚這一點。顯然,

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

但我不能得到一個分數的mod 10。教練想要確切的答案,而不是小數。任何幫助將不勝感激!

+0

您需要的第一件事是定義x mod 10的含義,如果x不是整數。如果'x'和'y'是整數,則一個定義將是'x/y mod 10'等於'[x mod(10 * y)]/y'(這將是一個有理數值)。 – Peter

回答

3

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

3

看看這裏:「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/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 .....

一小部分確切的答案而不是一個小數。

+0

我也得到28/11,但我的教授聲稱這是錯誤的。 – ComputerScientist123

+2

你的教授出於興趣而得到什麼答案?除非它是'2 6/11'(= 28/11寫成整數和[適當的分數](https://en.wikipedia.org/wiki/Fraction_(mathematics)#Proper_and_improper_fractions))我不確定他能得到什麼答案。 –

1

我可以推測符號是錯誤的,並且整個表達式應該在mod 10中在每個中間階段進行評估。由於(11 mod 1)爲1,則答案爲(7 * 4)mod 10 = 8.

想象一下僅支持個位數的計算器。

我不是說這是正確的答案,我同意28/11是正確的答案,但我正在試圖進入教授的頭。這在密碼學中很常見,每個計算都執行mod 2^256左右。

+0

謝謝大家。我很感激幫助。我會回覆教練想要的確切答案。 – ComputerScientist123

1

這是怎麼了原來的問題可能應該被寫,因爲這有不同的含義。 When the (mod 10) is written at the end,這意味着每個術語都使用隱含的mod 10操作進行評估。

\sqrt{foo}

的問題是有點不可思議,因爲10模數值是不通用的,因爲它不是素數。例如,不能評估以下內容,因爲1/2 mod 10未定義,因爲2和10不是互質。

\sqrt{foo}

1

所以,這裏是從教練的正確答案。我不知道他是怎麼想出了這個:

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 
0

使用Python:

from fractions import Fraction 
from math import fmod 

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

結果將是2.545454545454。所以我猜8是錯的。

+2

你能解釋你做了什麼以及你是如何找到你的解決方案的 – MZaragoza