我如何 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))
这里的上下文是我的问题:
我有 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))