проверка работоспособности модульного подразделения Java - PullRequest
0 голосов
/ 11 октября 2011

Если мое модульное деление верно; 1 / 5 mod 11 = 9. Кто-нибудь может это подтвердить?

Однако в Java; 1 / 5 % 11 = 0;

Я не уверен, что здесь происходит, это мой синтаксис, мне нужно как-то заключить его в скобки?

Я запутался сейчас:)

Может кто-нибудь посоветовать?

Спасибо

Ответы [ 4 ]

2 голосов
/ 11 октября 2011

1/5 мод 11 = 9. Кто-нибудь может это подтвердить?

(9 * 5)% 11 = 45% 11 = 1. Итак, да 9 - это модульная мультипликативная инверсия 5 в стране 'mod 11'.

Проблема в том, что в Java есть только целые числа и нет модульной арифметики. В Java % - это просто оператор, подобный *.

С http://en.wikipedia.org/wiki/Modular_arithmetic

Понятие модульной арифметики связано с понятием остатка в делении.

Итак, mod 11 и % 11 связаны, но не одно и то же!

2 голосов
/ 11 октября 2011

Это то же самое, что (1/5) мод 11.

(или, альтернативно, то же самое, что 1 / (5 мод 11), который все еще 1/5 == 0 [слева направона самом деле будет (1/5) мод 11, хотя])

1/5 = 0 (для целых чисел)

0 мод 11 = 0

0 голосов
/ 11 октября 2011

Это из-за приоритета оператора.

Java проходит там, где это упрощает экспресс.Он выполняет некоторые операции, затем при следующем проходе выполняет некоторые другие.«Самые высокие» операторы делаются первыми.Например, умножение перед сложением.Операторы ( ) находятся в первом проходе и позволяют вам переопределить нормальный порядок действий.

См. Эту таблицу: введите описание ссылки здесь

%находится в той же группе, что и * и /.Они выполняются слева направо.

Итак, вы хотите (1/5) % 11

Но у вас есть другая проблема в том, что это будет сделано в математике с плавающей запятой, поэтому вы получите приблизительное, а не точноеправильный ответ.

Вам нужно использовать класс BigInteger вместо встроенных примитивов.

0 голосов
/ 11 октября 2011

http://www.difranco.net/cop2551/java_op-prec.htm указывает, что *, / и% имеют одинаковый порядок приоритета, но в выражении / будут иметь приоритет над%. Таким образом, приведенный выше результат Java верен в отношении JLS.

...