Как деление заменить умножением
Перейти к содержимому

Как деление заменить умножением

  • автор:

Как заменить деление на умножение?

Я знаю, что для этого можно просто умножить делимое на обратную дробь, созданную из самого примера на деление. Предположим, что мы хотим 25 разделить на 5. 25 * 5/25 даст нужный результ в виде простой дроби.

Но так как мне нужна десятичная дробь, то придется делить простую дробь, чтобы ее получить. Замкнутый круг. А я хочу как раз избежать операции деления. Существует ли достаточно простой и универсальный способ перевода простой дроби в десятичную без деления?

Или как вариант, какой может быть другой, достаточно простой и универсальный способ замены деления на умножение?

задан 28 Окт ’12 19:21

мы хотим 25 разделить на 5. 25 * 5/25

Эээ, тут два вопроса, что такое 5. 25 и эта звездочка?

(15 Мар 2:26) mihailm

6 ответов

А зачем делить на 5/25? В данном случае это верно, но не всегда. Например, чтобы поделить 36 на 4, надо умножить 36 на 1/4 =9/36, а не на 4/36.
Чтобы поделить на 5, надо умножить на 1/5 = 0,2.

Поставьте задачу точнее: что делать, если деление не заканчивается за конечное число шагов? Взять приближенное значение (с какой точностью?) Найти период дроби?

Если Вы делите только на степени двойки и пятерки (чтобы деление закончилось), можно воспользоваться тем, что 1/2 = 0,5 и 1/5 = 0,2, т.е. заменить деление на 5 умножением на 2 с последующим передвижением десятичной запятой. Правда, последнее действие по сути тоже деление, но без него не обойтись.

отвечен 28 Окт ’12 22:15

Уточняю: найти относительно простой и универсальный способ выполнить деление без самого деления. Считайте, что деление теперь является тяжким преступлением, которое карается расстрелом.

(28 Окт ’12 22:24) german398

Вы не поняли. Что и на что делится? С какой точностью? Например, только числа в пределах от 1 до 10000. Или любые числа. Приближенно? Или точно? В последнем случае нужно найти период дроби?

Что считать результатом деления 5/3? 1,66666. или 1,7 или 1,67, или 1,667, . или 1,(6) ?

Если бы такой способ знали, его бы изучали в школе.

Если эта задача программистская, то все целые числа ограничены какой-то константой, а все дроби — какой-то точностью.

(28 Окт ’12 22:29) DocentI

Можно привести к знаменателю 10, 100, 1000. А затем написать как десятичную

отвечен 15 Июн ’15 13:41

Если деление запрещено, то ответ можно найти методом подбора: 100 / 5 = ? Какое число нужно умножить на 5, что бы получилось 100? Методом подбора получаем 20. Можно воспользоваться «словарём» — заранее иметь словарь значений от деления единицы на разные числа, которые могут потребоваться, и затем умножать второе число на значение из словаря. Например, для 1/5 имеем без деления заранее известный (может быть методом подбора) ответ: 0.2 Тогда заменяем 100/5 = 100*0.2 = 20 Ну и, наконец, можно в некоторых случаях, выйти из положения с помощью хитрых правил. Например, деление на 10 не обязательно вычислять, нужно просто передвигать «запятую», разделяющую целую и дробную часть. При этом если в пустую дробь попадает 0, то её не записываем, так, 2230/10 = 223 без выполнения операции деления. Аналогично можно поступить с другими случаями: что бы 2230 разделить на 2, нужно сначала перевести это число в двоичную систему счисления, а затем перенести запятую и вернуть обратно в десятичную. Для данного случая 2230(10) = 100010110110(2) / 2(10) = 10001011011(2) = 1115(10). Ответ получен без операции деления — только перемещением запятой в нужной системе счисления.

отвечен 1 Дек ’16 10:47

Чтобы перевести число в двоичную (десятичную, …) систему счисления, нужно поделить его на два (десять, …). Причём не однажды. Я думаю, что исходная задача всё-таки нереалистична. Что значит: за деление — расстрел? Надо дойти с жалобой до ЕСПЧ! Наверняка была какая-то осмысленная задача, которая привела к этой бессмысленной формулировке…

(1 Дек ’16 11:35) abracadabra2

Читайте мою статью «Вместо деления умножение» в интернете

отвечен 29 Янв ’19 20:24

Сам искал ответ на этот вопрос. Умножение — это последовательное сложение. Например 3*4 это 3+3+3+3. То есть технически умножение легко реализуется циклом с постоянным прибавлением одного и того же числа. Нам известно число 3 и сколько итераций мы должны выполнить — 4.

Получается деление — это обратный процесс, который решается через вычитание. Чем мы в школе и занимались, решая в столбик. Сколько раз можно вычесть одно число из другого? Чтобы разделить 12 на 3, надо вычесть из 12 три ровно четыре раза. То есть по сути мы ищем число итераций.

Преобразовать a/(b+c) в какой-то вариант без знаменателя не выйдет, поэтому и решить деление через умножение не получится.

отвечен 14 Мар 21:16

Вопрос очень давно ставился, и сформулирован был «коряво», но суть его ясна. Я бы добавил к сказанному следующее. Разделить число b на число a означает решить уравнение ax=b. Числа a, b можно считать натуральными, хотя это не важно. Частное может находиться точно или приближённо.

Такие уравнения, как и почти любые другие типа x^2=A, x^3=A, . решаются методом половинного деления. Корень уравнения ax=b принадлежит отрезку [1,b]. Делим отрезок пополам, берём его середину, и далее выбираем одну из половинок отрезка. Это достаточно универсальный способ.

(14 Мар 21:38) falcao

Будем говорить честно, в школах у нас паршиво учат: 49 / 7 = 49 * (7 ^ -1)

отвечен 24 Июл ’14 4:51

Здравствуйте

Математика — это совместно редактируемый форум вопросов и ответов для начинающих и опытных математиков, с особенным акцентом на компьютерные науки.

задан
28 Окт ’12 19:21

показан
26939 раз

обновлен
15 Мар 2:26

Деление через умножение на обратное число

Народ, подскажите как можно делить двоичные целые числа методом умножения на обратное число!?
Буду очень признателен.

12 ответов

15 мая 2007 года
19 / / 20.04.2006

Народ, подскажите как можно делить двоичные целые числа методом умножения на обратное число!?
Буду очень признателен.

Если тебя интересует сам алгоритм, то смысл его сводится к следующему: операцию деления Z/D можно заменить на умножение Z*(1/D). Весь вопрос в том, как определить 1/D. Для этого используются два метода — разложение в ряд Тейлора и метод Ньютона-Рафсона.
Первый: D=1+X, тогда 1/D = (1-X)*(1+X^2)*(1+X^4)*(1+X^8)*(1+X^16)*.
Второй сводится к решению уравнения f(X) = 1/X — D = 0, т.е. X = 1/D, которое может быть найдено с помощью реккурентного соотношения
X(i+1) = X(i)*(2-X(i)D).

16 мая 2007 года
35 / / 13.05.2007

Если тебя интересует сам алгоритм, то смысл его сводится к следующему: операцию деления Z/D можно заменить на умножение Z*(1/D). Весь вопрос в том, как определить 1/D. Для этого используются два метода — разложение в ряд Тейлора и метод Ньютона-Рафсона.
Первый: D=1+X, тогда 1/D = (1-X)*(1+X^2)*(1+X^4)*(1+X^8)*(1+X^16)*.
Второй сводится к решению уравнения f(X) = 1/X — D = 0, т.е. X = 1/D, которое может быть найдено с помощью реккурентного соотношения
X(i+1) = X(i)*(2-X(i)D).

все проще мне нужно просто разделить двоичную «1» на делитель, и потом сдвинуть дробную часть — в сектор целой, и полученное двоичное целое умножить на делимое ))

16 мая 2007 года
19 / / 20.04.2006

все проще мне нужно просто разделить двоичную «1» на делитель, и потом сдвинуть дробную часть — в сектор целой, и полученное двоичное целое умножить на делимое ))

Так действительно проще. Только как ты будешь делить 1 на делимое?

18 мая 2007 года
35 / / 13.05.2007
Так действительно проще. Только как ты будешь делить 1 на делимое?

так — как еслибы это было число с плавающей точкой: например 1/2 будет выглядеть 0000.1000 — теперь сдвину дробную часть в область целой, и умножу делимое на 1000 ))

19 мая 2007 года
19 / / 20.04.2006

так — как еслибы это было число с плавающей точкой: например 1/2 будет выглядеть 0000.1000 — теперь сдвину дробную часть в область целой, и умножу делимое на 1000 ))

Если тебя это устраивает, то замечательно. Просто это совсем не замена деления умножением.

19 мая 2007 года
35 / / 13.05.2007
почему? умножаем на обратное число, просто сдвинутое. чтоже это тогда?
19 мая 2007 года
19 / / 20.04.2006
А как ты собираешься находить обратные числа? Например, 1/23?
20 мая 2007 года
35 / / 13.05.2007

как обычно — двоичным делением. если тебя смущает целочисленность, то уменя в задаче — все обратные числа сохраняются заранее и извлекаются из таблицы

20 мая 2007 года
19 / / 20.04.2006

как обычно — двоичным делением. если тебя смущает целочисленность, то уменя в задаче — все обратные числа сохраняются заранее и извлекаются из таблицы

Меня ничего не смущает — это твоя задача, и тебе реализовывать ее так, как тебе удобнее. Только я повторюсь — тот метод, что ты предложил, не есть метод замены деления умножением, потому что такой метод замены предполагает НЕ использование операции деления вообще, а у ты собираешься использовать «обычное двоичное деление». Т.е. ты просто заменяешь одну операцию деления — двумя, одна из которых тоже деление. Может, с сумме они и дадут выигрыш по времени/производительности, ни это уже зависит от реализации.

20 мая 2007 года
35 / / 13.05.2007

фишка реализации в том, что обратные числа уже постчитаны и просто достаются из таблицы при умножении:)

23 мая 2007 года
365 / / 19.12.2005
13 декабря 2018 года
1 / / 13.12.2018

Есть метод деления любого числа на любое умножением на определённое для каждого делителя число. Этот метод я обнаружил в 80-х годах и только 10 лет назад его обнародовал. Он называется **»Вместо деления умножение»** Найдите в интернете мою статью под этим названием, которую я представил на международной конференции в 2006 году как открытие. Я пишу книгу на эту тему, материал потрясающий. Книга будет по плану состоять из 11 глав. На подступах к этому открытию я в в 1989 г написал статью *»удивительные приключения десятичных дробей»* («Квант», 1989 № 8, с.23-30). В 100 школах Москвы в 1985-1990-х годах я читал лекции на эту тему для старшеклассников. См. также мою статью «А фокусы ли это» в журнале «Математика в школе», 1989 № 5, с.110-113. Ещё в древних индийских ведах 4000 лет назад кое-что об этом методе знали. Тот, кто найдёт меня, позвоните мне. я познакомлю его с книгой американца, который был рядом с этим открытием, но не увидел его.

Свойства умножения и деления

На уроках математики в 5 классе мы тренируемся умножать, делить, складывать и вычитать. Самое интересное — это хитрить и упрощать выражения. В этом помогают свойства умножения и деления, про которые мы сейчас расскажем.

· Обновлено 21 октября 2022

Свойства умножения

Умножение — арифметическое действие, в котором участвуют два аргумента: множимый и множитель. Результат их умножения называется произведением.

Узнаем, какие бывают свойства умножения и как их применять.

Переместительное свойство умножения

От перестановки мест множителей произведение не меняется.

То есть, для любых чисел a и b верно равенство: a * b = b * a.

Это свойство можно применять к произведениям, в которых больше двух множителей.

  • 6 * 5 = 5 * 6 = 30;
  • 4 * 2 * 3 = 3 * 2 * 4 = 24.

Сочетательное свойство умножения

Произведение трех и более множителей не изменится, если какую-то группу множителей заменить их произведением.

То есть, для любых чисел a, b и c верно равенство: a * b * c = (a * b) * c = a * (b * c).

    3 * 2 * 5 = 3 * (2 * 5) = 3 * 10 = 30

Сочетательное свойство можно использовать, чтобы упростить вычисления при умножении. Например: 25 * 15 * 4 = (25 * 4) * 15 = 100 * 15 = 1500.

Если не применять сочетательное свойство и вычислять последовательно, решение будет значительно сложнее: 25 * 15 * 4 = (25 * 15) * 4 = 375 * 4 = 1500.

Распределительное свойство умножения относительно сложения

Чтобы умножить сумму на число, нужно умножить на это число каждое слагаемое и сложить полученные результаты.

То есть, для любых чисел a, b и c верно равенство: (a + b) * c = a * c + b * c.

Это свойство работает с любым количеством слагаемых: (a + b + с + d) * k = a * k + b * k + c * k + d * k.

С учетом переместительного свойства умножения можно переформулировать правило так:

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

Онлайн-курсы математики для детей помогут подтянуть оценки, подготовиться к контрольным, ВПР и экзаменам.

Распределительное свойство умножения относительно вычитания

Чтобы умножить разность на число, нужно умножить на это число сначала уменьшаемое, затем вычитаемое, и из первого произведения вычесть второе.

То есть, для любых чисел a, b и c верно равенство: (a − b) * c = a * c − b * c.

С учетом переместительного свойства умножения можно переформулировать правило так:

Чтобы число умножить на разность чисел, нужно это число умножить отдельно на уменьшаемое и вычитаемое и из первого полученного произведения вычесть второе.

Свойство нуля при умножении

Если в произведении хотя бы один множитель равен нулю, то само произведение будет равно нулю.

То есть, для любых чисел a, b и c верно равенство:
0 * a * b * c = 0.

Свойство единицы при умножении

Если умножить любое целое число на единицу, то в результате получится это же число.

То есть, умножение на единицу не изменяет умножаемое число: a * 1 = a.

Узнай, какие профессии будущего тебе подойдут
10 минут — и ты разберёшься, как стать тем, кем захочешь

Узнай, какие профессии будущего тебе подойдут

Свойства деления

Деление — арифметическое действие обратное умножению. В результате деления получается число (частное), которое при умножении на делитель дает делимое.

Основные свойства деления целых чисел

  1. Деление на нуль невозможно.
  2. Деление нуля на число: 0 : a = 0.
  3. Деление равных чисел: a : a = 1.
  4. Деление на единицу: a : 1 = a.
  5. Для деления переместительное свойства не выполняется: a : b ≠ b : a.
  6. Деление суммы и разности на число: (a ± b) : c = (a : c) ± (b : c).
  7. Деление произведения на число:
    (a * b) : c = (a : c) * b, если a делится на c;
    (a * b) : c = a * (b : с), если b делится на c;
    (a * b) : c = a * (b : с) = (a : c) * b, если a и b делятся на c.
  8. Деление числа на произведение:
    a : (b * c) = (a : b) : c = (a : c) : b.

И еще одно важное свойство деления, которое проходят в 5 классе:

Если делимое и делитель умножить или разделить на одно и тоже натуральное число, то их частное не изменится.

В буквенной форме это свойство выглядит так: a : b = (a * k) : (b * k), где k — любое натуральное число.

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

Пример 1

Вычислить: 500 * (100 : 5).

Как решаем: 500 * (100 : 5) = (500 * 100) : 5 = 50000 : 5 = 10000.

Ответ: 500 * (100 : 5) = 10000.

Пример 2

Упростить выражение: 27a – 16a.

Как решаем: 27a – 16a = a * 27 – a * 16 = a * (27 — 16) = a * 11 = 11a.

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

Как деление заменить умножением

unsigned int a; // 32-x разрядные беззнаковые числа
unsigned int b;
unsigned int c;

Усли известо ,что c — постоянная величина, как можно заменить уделение умножением.
(объявить z = 1/c как double(те вещественное число) и умножать на него не подходит, тк ‘a’ может
получится нулем, а оно потом пользутся в качестве делителя.
Есть решение какое-нибудь?

Re: Замена деления умножением.

От: ilnar
Дата: 24.01.06 13:41
Оценка:

Здравствуйте, Аноним, Вы писали:

А>привет.

А>unsigned int a; // 32-x разрядные беззнаковые числа
А>unsigned int b;
А>unsigned int c;

А>a = b/c ;

А>Усли известо ,что c — постоянная величина, как можно заменить уделение умножением.
А>(объявить z = 1/c как double(те вещественное число) и умножать на него не подходит, тк ‘a’ может
А>получится нулем, а оно потом пользутся в качестве делителя.
А>Есть решение какое-нибудь?

я практикую сабж в сравнениях, например:

if( a < b/c ) . ; else . ;
if( a*с < b ) . ; else . ;

это иногда уточняет (целочисленное деление, остаток)
но при этом даю себе отчет что a*c может дать переполнение целого

Re[2]: Замена деления умножением.

От: Аноним
Дата: 24.01.06 14:15
Оценка:

2 ilnar: твоя проверка уже содержит деление, а мне от него избавится нужно.
Re[3]: Замена деления умножением.

От: ilnar
Дата: 24.01.06 14:21
Оценка:

Здравствуйте, Аноним, Вы писали:

А>2 ilnar: твоя проверка уже содержит деление, а мне от него избавится нужно.

при замене то деления уже нет

Re: Замена деления умножением.

От: gear nuke
Дата: 24.01.06 14:21
Оценка: 6 (2)

Здравствуйте, <Аноним>, Вы писали:

А>привет.

А>unsigned int a; // 32-x разрядные беззнаковые числа
А>unsigned int b;
А>unsigned int c;

А>a = b/c ;

А>Усли известо ,что c — постоянная величина, как можно заменить уделение умножением.

People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth

Re: Замена деления умножением.

От: ДимДимыч http://klug.org.ua
Дата: 24.01.06 14:51
Оценка:

Здравствуйте, Аноним, Вы писали:

А>unsigned int a; // 32-x разрядные беззнаковые числа
А>unsigned int b;
А>unsigned int c;

А>a = b/c ;

А>Усли известо ,что c — постоянная величина, как можно заменить уделение умножением.
А>(объявить z = 1/c как double(те вещественное число) и умножать на него не подходит, тк ‘a’ может
А>получится нулем, а оно потом пользутся в качестве делителя.
А>Есть решение какое-нибудь?

 unsigned int a; unsigned int b; unsigned int c; unsigned long long int z; . z = 0x100000000LL / c; . a = b*z >> 32;

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

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