试图解决我的方法中可能发生溢出的原因

问题描述 投票:0回答:1

我正在解决一个问题

查找小于等于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. 提示可能的更正
algorithm number-theory
1个回答
0
投票

您的实现是不正确。反例:

A = 100
B =  10
C =   8

期望:24080)实际:1A / (B * C) == 100 / 80 == 1

正确的公式是

A / (B * C / gcd(B, C))
© www.soinside.com 2019 - 2024. All rights reserved.