2
我應該破解凱撒密碼。 我必須聲明函數crack : int * int -> int
因此,如果(k, c)
是類型int
,其中k
是解密文本和c
密文,呼籲crack(k, c)
將返回鍵(MOD 10)n
,這是需要得到c
至k
的。 一個例子是,在調用crack(20458790, 64892134)
將返回4.使用SML破解凱撒密碼
如果c
不是一個正確的編碼k
,功能不必實際工作。
我希望我在這裏已經夠清楚了。我理解這裏的實際任務(我有k和c,我需要n),但我不知道如何在代碼中顯示它。
我忘了補充一點,不好意思。如果第二個數字(c)不是第一個數字的正確編碼,則該函數實際上並不需要工作。我嘗試了你的建議,但出於某種原因,當我輸入上面的數字時,它返回6而不是4。任何想法爲什麼會這樣做?謝謝! – GeorgeWChubby 2010-09-19 10:58:10
非常感謝!我想我終於明白了。我不得不說(mod 10 - k mod 10)mod 10。我不知道爲什麼,但它有效。 – GeorgeWChubby 2010-09-19 11:28:22
@George:哎呀,是的,我打開了變量名稱。它的工作原理是簡單地從c的最後一位減去k的最後一位數字。所以如果你把這個差別加到c的最後一位,你會得到k的最後一位數字。對於其他數字也是如此,因爲所有數字都有相同的差異。 – sepp2k 2010-09-19 11:32:21