Разное

Div mod java: Деление по модулю в Java • Vertex Academy

Деление и модуль в Java

спросил

Изменено 1 год, 5 месяцев назад

Просмотрено 590 раз

Создайте метод с именами разделовEvenly(a,b), который может принимать два целых числа, a и b, возвращать true, если a можно разделить на b без остатка. В противном случае верните false. Пример : делитравномерно(8, 4) ➞ истина # 8/4 = 2 делитравномерно(10, 2) ➞ ложь # 10/2 = 5

2

Этот вопрос касается оператора модуля, в java символа %, также известного как оператор остатка.

См. также документацию

Если «a» можно разделить на «b» без остатка, результатом a / b будет четное число. Затем вы можете проверить это с помощью операции модуля.

Написав это как метод в Java, у вас есть

 общедоступных логических делителейEvenly(int a, int b) {
    инт деление = а/б;
    возврат деления % 2 == 0;
}
 

Эти два шага резюмируются следующим образом:

  1. Разделить a на b и присвоить это значение переменной (называемой в коде «делением»)
  2. Проверить, что если это деление разделить на два, то не будет остатка (деление по модулю 2 равно нулю). Если это так, то она делится поровну. В противном случае (деление по модулю 2 не ноль) результатом деления будет нечетное число.
3

Я думаю, вы ищете по модулю % оператор. Чтобы проверить, является ли число в вашем случае a/b четным, вы можете сделать это: (a/b)%2 == 0

Полный метод будет блокировать что-то вроде этого:

 (целое а, целое б) {
    возврат (а/б)%2==0;
}
 

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

Деление по модулю против остаточного деления java

Я многому научился из моего последнего вопроса, надеюсь, я больше не совершу тех же ошибок:)

Это вытекает из предыдущего вопроса. Вот что я ДУМАЮ, что знаю:

Для целых чисел в java (я предполагаю, что на всех языках, но я спрашиваю конкретно в JAVA):

 1/3 = 0
1%3 = 1
 

Я был в тупике, почему i%j = i , когда i < j , и предыдущий автор объяснил, как это работает, а также заявил, что «Во-первых, в Java % — это оператор остатка (не по модулю), который имеет немного другую семантику…»

Их объяснение идеально подходит для что мне было нужно. Однако меня смутила их цитата, потому что меня всегда учили, что в математике модульность == деление остатка.

Как выполнить модульное деление в JAVA и есть ли подводные камни, на которые следует обратить внимание при попытке использовать % в качестве оператора модуля?

2

математическое деление по модулю с остатком.

 7 мод 4 = 1 R3
 

см.:

 n = a * m + r
 

Оператор по модулю в Java (как и в большинстве других языков) дает только оставшуюся часть, и я не знаю, правильно ли он работает с отрицательными числами.

В математике модуль всегда положителен. В этом отличие от оператора по модулю в java.

 a mod n = b, если существует число k с a = b + kn
                    и 0 <= b < n
 

Это означает, что если взять -14 по модулю 4:

 -14 = b + k * 4 // возьмем -3 вместо k
 -14 = б + -3 * 4
 -14 = б - 12
 -2 = б
 

это было бы неправильно (математически), потому что b отрицательно. поэтому нам нужно взять -4 для k

 -14 = b + -4 * 4
 -14 = б + 16
  2 = б
 

это правильный ответ. В этом случае разница только в знаке, но если вы возьмете -15 по модулю 4, вы получите -3 в java и большинстве других языков, но математически правильный ответ будет 1 (-15 + 16)

используя java, вы получите отрицательные значения.

2

Вас может смутить «оператор по модулю» в арифметике, который совпадает с оператором % в Java и подобных языках, я не думаю, что существует такая вещь, как «модульное деление». Оператор % в java всегда будет возвращать целочисленный остаток от многократного деления двух чисел. Как и в арифметике, (i % j) = i , где i < j и i >= 0 . Результат операции меньше j .

2

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *