@Gagatyn
Самоучка

Как работает остаток от деления в js?

Здравствуйте!
Наткнулся на задачку "Шифр Цезаря" ROT13. Каждая буква в слове заменяется на букву, которая расположена на 13 букв впереди.
Я намуливал, наколдовал, путался несколько раз в поиске идеального решения. Решил.
Но существует решения, до которого я бы никогда не додумался, потому что не знаю как работает %.
Закомментированный код и есть идеальное-решение.

1. Не шарю как работает %.
Знаю, что удобно использовать для поиска не/четных чисел num % 2 === 0 // истина для четного числа.
Возьмём пример из идеального решения: попадается А буква, номер 65 из таблицы Юникода, заменить ее следует на N, 65 + 13
Догадка моя не подходит к %, т.е. 65/26 = 2.5, 5 -- это остаток от деления.
Но 65%26 = 13, почему, объясните пожалуйста на пальцах?

2. Есть ли какой-то набор задач на %, чтобы уверенно освоиться в использование сего оператора. Думаю, что оч полезный для поиска в массивах.

Огромное спасибо за ответы!
  • Вопрос задан
  • 3255 просмотров
Решения вопроса 3
SagePtr
@SagePtr
Еда - это святое
65 % 26.
Представь, что у тебя есть 65 яблок, нужно раздать его 26 людям поровну, чтобы каждому досталось одинаковое количество, но яблоко разрезать нельзя.
Если каждому раздать по 1 яблоку, то 26 яблок уйдёт, 39 яблок останется в корзине.
Если каждому раздать по 2 яблока, то 52 яблока уйдут, 13 яблок останется в корзине.
13 яблок раздать поровну 26 людям уже не выйдет, а резать их по условию нельзя.
Эти оставшиеся яблоки, которые нельзя разделить поровну между людьми - это и есть остаток от деления.
Надеюсь, теперь понятно?
Ответ написан
solotony
@solotony
покоряю пик Балмера
65/26 = 2.5, 5 -- это остаток от деления.


5 - это не остаток от деления. 5 - это класс в котором проходят десятичные дроби.
Ответ написан
Комментировать
Dnebl
@Dnebl
65 % 26 //13
26 + 26 //52
65 - 52 //13
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dollar
@dollar
Делай добро и бросай его в воду.
Есть ли какой-то набор задач на %, чтобы уверенно освоиться в использование сего оператора.

Вот пример(ы) для освоения:
for(let i=0; i<=65; i++) {
  console.log(i + ' % 26 == ', i % 26);
}

Запустите в консоли, и сразу станет легко осваиваться.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы