2015-09-05 4 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=1 (11*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.

Один естественный способ определить модульную функцию является

а (мод б) = A - B ⌊a/b⌋

где ⌊⋅⌋ обозначает floor function. Это подход, используемый во влиятельной книге 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 .....

Фракцию являетсяточный ответ, а не десятичная.

+0

Я тоже получил 28/11, но мой профессор утверждает, что это неправильно. – ComputerScientist123

+2

Какой ответ * делает ваш профессор, из интереса? Если это не '2 6/11' (= 28/11, написанное как целое число и [правильная доля] (https://en.wikipedia.org/wiki/Fraction_ (математика) #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

Смежные вопросы