EpicKai Ответов: 1

Деление целых чисел без использования операторов деления, умножения, модуляции


import java.lang.Math;
public class Solution {
    public int divide(int dividend, int divisor) {
        int count = 0;
        boolean isNegative = false;
        if(dividend == divisor){
            return 1;
        } else if(divisor == 1){
            return dividend;
        } else if(dividend < 0 && divisor < 0){
          isNegative = false;
        } else if(dividend < 0 || divisor < 0){
            isNegative = true;
        } else if(dividend > Integer.MAX_VALUE){
            return Integer.MAX_VALUE;
        }
        if(dividend == Integer.MIN_VALUE && divisor == -1){
          return Integer.MAX_VALUE;
        }
        dividend = Math.abs(dividend);
        divisor = Math.abs(divisor);
            while(divisor <=dividend){
              dividend -= divisor;
              count++;
            }
        if(isNegative){
            count = count * -1;
        }
    return count;    
    }
}


Что я уже пробовал:

Вот мой код для деления без использования оператора деления, умножения и mod, но я хотел бы видеть более эффективный способ деления 2 целых чисел без использования этих операторов.

[no name]

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

1 Ответов

Рейтинг:
1

OriginalGriff

Я так понимаю, это ваше домашнее задание, отсюда и ограничения? :смеяться:
Существует несколько более быстрых алгоритмов, чем повторное вычитание:
Алгоритм деления-Википедия, свободная энциклопедия[^]
Я предпочитаю двоичное деление, так как оно очень хорошо подходит для компьютеров: Двоичное Деление[^]
Вы должны были бы найти их сами с помощью тривиального Google.