Я знаю, что для этого можно просто умножить делимое на обратную дробь, созданную из самого примера на деление. Предположим, что мы хотим 25 разделить на 5. 25 * 5/25 даст нужный результ в виде простой дроби. Но так как мне нужна десятичная дробь, то придется делить простую дробь, чтобы ее получить. Замкнутый круг. А я хочу как раз избежать операции деления. Существует ли достаточно простой и универсальный способ перевода простой дроби в десятичную без деления? Или как вариант, какой может быть другой, достаточно простой и универсальный способ замены деления на умножение? задан 28 Окт '12 19:21 german398 |
А зачем делить на 5/25? В данном случае это верно, но не всегда. Например, чтобы поделить 36 на 4, надо умножить 36 на 1/4 =9/36, а не на 4/36. Поставьте задачу точнее: что делать, если деление не заканчивается за конечное число шагов? Взять приближенное значение (с какой точностью?) Найти период дроби? Если Вы делите только на степени двойки и пятерки (чтобы деление закончилось), можно воспользоваться тем, что 1/2 = 0,5 и 1/5 = 0,2, т.е. заменить деление на 5 умножением на 2 с последующим передвижением десятичной запятой. Правда, последнее действие по сути тоже деление, но без него не обойтись. отвечен 28 Окт '12 22:15 DocentI
Уточняю: найти относительно простой и универсальный способ выполнить деление без самого деления. Считайте, что деление теперь является тяжким преступлением, которое карается расстрелом.
(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 ЕвгенийX Чтобы перевести число в двоичную (десятичную, …) систему счисления, нужно поделить его на два (десять, …). Причём не однажды. Я думаю, что исходная задача всё-таки нереалистична. Что значит: за деление — расстрел? Надо дойти с жалобой до ЕСПЧ! Наверняка была какая-то осмысленная задача, которая привела к этой бессмысленной формулировке…
(1 Дек '16 11:35)
abracadabra2
|
Сам искал ответ на этот вопрос. Умножение - это последовательное сложение. Например 3*4 это 3+3+3+3. То есть технически умножение легко реализуется циклом с постоянным прибавлением одного и того же числа. Нам известно число 3 и сколько итераций мы должны выполнить - 4. Получается деление - это обратный процесс, который решается через вычитание. Чем мы в школе и занимались, решая в столбик. Сколько раз можно вычесть одно число из другого? Чтобы разделить 12 на 3, надо вычесть из 12 три ровно четыре раза. То есть по сути мы ищем число итераций. Преобразовать a/(b+c) в какой-то вариант без знаменателя не выйдет, поэтому и решить деление через умножение не получится. отвечен 14 Мар 21:16 1
Вопрос очень давно ставился, и сформулирован был "коряво", но суть его ясна. Я бы добавил к сказанному следующее. Разделить число 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 DanceM |
Эээ, тут два вопроса, что такое 5. 25 и эта звездочка?