在尝试解决时试图在我的方法中找到可能溢出的原因

我正在解决一个问题

查找小于等于A且可被整除的总数   B和C。

我写了以下函数来计算相同

 public int solve(int A, int B, int C) {
        if(B==C){
            return A/B;
        }else{
            return A/(B*C);
        }
    }

尽管这给了我正确的答案,但是这很容易溢出。我怀疑当我们将b和c相乘时。我无法理解如何纠正此功能以克服溢出。

我不是在寻找具体答案,而是对了解更感兴趣
  1. 我对么?
  2. 提示可能的更正
评论
  • 沉默U
    沉默U 回复

    您的实现不正确。反例:

    A = 100
    B =  10
    C =   8
    
    • Expected: 2 (the numbers are 40 and 80)
    • Actual : 1 (A / (B * C) == 100 / 80 == 1)

    正确的公式是

    A / (B * C / gcd(B, C))
    

    where gcd stands for the greatest common divisor