Модуль и отрицательное число в математике?

сегодня вечером мне любопытно насчет отрицательного числа по модулю в математике.

Независимо от языка программирования, калькуляторы при этом возвращают разные значения, которые зависят от собственной формулы, лежащей в основе, какой правильный ответ, если на ЕГЭ в младших классах есть такие вопросы:

  -7 mod  2 = ?
   7 mod -2 = ?
  -7 mod -2 = ? 

PS: извините, если я слишком стар, чтобы помнить ответы на эти «основные вопросы», и спасибо за вашу доброту, чтобы дать мне правильный ответ!

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

function isEvenOrOdd(num) {
    return num % 2 === 1 ?'odd' : 'even';
}

isEvenOrOdd(5); // 'odd'
isEvenOrOdd(18); // 'even'
isEvenOrOdd(0); // 'even'
isEvenOrOdd(-7); // 'even'

Безопаснее сравнивать с нулем: return num % 2 !== 0 ?'odd' : 'even'; }

JohanC 26.12.2020 20:15

@JohanC да, Йохан, я делал это все время, пока мой стажер не сделал num % 2 !== 1, я понял, что модуль в программировании может быть отрицательным :)! Тогда этот вопрос был задан.

Kai 28.12.2020 06:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
2
365
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Чтобы вычислить x mod m, где x отрицательно, вам нужно продолжать добавлять m к x, пока он не станет неотрицательным, поэтому -7% 2 = -7 + 2 + 2 + 2 + 2 = 1.

Чтобы проверить, является ли число нечетным или четным, всегда делайте это в абсолютном значении, например |x| mod m, поэтому вам не нужно беспокоиться об отрицательном значении по модулю.

просто перепроверьте, вы имеете в виду, что результат -7 % 2 равен -4 modulus 1 или я ошибаюсь?

Kai 28.12.2020 08:54
Ответ принят как подходящий

В математике модуль должен быть> 1, и соглашение состоит в том, что операция по модулю дает наименьшее неотрицательное целочисленное решение a+km=b:

-7 mod  2 = 1
 7 mod -2     Illegal
-7 mod -2     Illegal

Легко расширить определение, включив в него отрицательные числа (и 1, и -1):

-7 mod  2 = 1
 7 mod -2 = 1
-7 mod -2 = 1
-7 mod  3 = 2

Но в вычислениях разные языки используют разные соглашения:

-7 mod  2 = {1, or -1, or undefined}

Я подозреваю, что ваша система говорит -7 mod 2 = -1, так что isEvenOrOdd(-7); дает «четный» (потому что -1 ≠ 1).

спасибо вам за ваш ответ! вот это мне интересно! Кстати, не могли бы вы немного просветить меня о результате -7 по модулю 2: должно ли это быть -4 по модулю 1 или -3 по модулю 1?

Kai 28.12.2020 07:38

@Kai: я не понимаю твоего вопроса. Вы спрашиваете меня о -7 mod 1?

Beta 29.12.2020 02:38

О, я просто хочу спросить результат -7 / 2 = ?? . Для положительного числа это 7/2 = 3 по модулю 1 (3 * 2 + 1 = 7).

Kai 29.12.2020 08:54

@Kai: модуль - это делитель, а не остаток. Математически -7 по модулю 2 = 1 (потому что -7 = (-4)*2+1). Некоторые компьютерные системы делают это, а некоторые говорят, что -7 по модулю 2 = -1 (потому что -7 = (-3)*2 + (-1)).

Beta 29.12.2020 16:00

Другие вопросы по теме