我如何 return 数字 A 除以数字 B 的次数直到它包括余数?

How do I return the amount of times number A can be divided by number B untill it includes a remainder?

这里的上下文是我的问题:

我有 table 个零件。一个零件是由一组材料制成的,我们称其为常量材料变量 z。所以这个 table 是一个 table 的零件,全部由一组材料制成。此 table 中的每一行都是一个新部分。还有一列表示将由 1 套材料生产的零件数量。

所以如果我有:

var z = 1 //just some constant

var x = 5 //the amount of parts produced from a single set of materials

var y = 23 //the total amount of parts that have to be made 

我知道一组材料生产的零件数量,我知道需要生产的零件数量。我生产的零件永远不会比需要的少,所以我知道 4 套材料可以生产 20 个零件,但我仍然少 3 个。如果我使用 5 套材料,我可以生产 25 个零件,剩下的 2 个零件。

我的问题是我尝试使用 mod 来解决这个问题,但我在某处犯了一个错误

//Fun
    const fun = async () => {
        try {

            
            let x = 23;
            let y = 5;
            const result = x/y

            if(x%y == 0) {
                console.log(x, ' divided by', y, ' has remainder of: ', x%y);
                console.log(y, ' divided by', x, ' has remainder of: ', y%x);

            }
            else {
                console.log(x, ' divided by', y, ' has remainder of: ', x%y); 
                console.log(y, ' divided by', x, ' has remainder of: ', y%x);
            }
 
        } catch (err) {
            console.log(err.message);
        }
    }

因此,为了进一步清楚起见,我总是想找到一个数可以被某个数除的最大次数,如果它有余数,则记录余数。可能的解决方案是区分正余数还是负余数?感谢任何帮助,谢谢!!!

Math.floor( A/B ),其中 A 是所需的数量,B 是一组中的件数,将为您提供余数之前的除法数(因为除法只是 B 的次数A 减去,然后我们用 Math.floor 向下舍入),(A%B) 给你之后的余数。

如果你想知道 X 可以被 Y 整除多少次,你可以

yz =x

z*log(y) = log(x)

z = log(x)/log(y)

从这里开始,您可以选择 floor(z) 或 ceil(z),具体取决于您的问题。

这可能不是您要查找的内容,但它是到达目的地的 shorthand 方式。

const fun = (x, y) => {
  let r = x % y; // store our modulus here
  return !r ? [x, 0] : [(y - r + x), y - r];
  // if there is no remainder, return the dividend and zero: x, 0
  // otherwise, the next whole number result is found by
  // subtracting the modulus from the divisor and adding the dividend: (y - r + x)
  // and the difference between the new divisor and the old divisor is the divisor minus the modulus: (y - r)
}

我让它以数组形式返回,但您可以使用 join(',')

轻松地将其转换为您的字符串格式

const fun = (x, y) => {
  let r = x % y;
  return !r ? [x, 0] : [(y - r + x), y - r];
}
console.log(fun(23, 5))
console.log(fun(33, 2))