gpt4 book ai didi

寻找下一个倍数的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:52:37 26 4
gpt4 key购买 nike

给定两个正整数 x 和 y,我需要找到下一个大于或等于 x 且是 y 的倍数的数。

例如:

x=18, y=3 => 18

x=18, y=5 => 20

x=121, y=25 => 125

我的第一个想法是一直递增 x 直到找到匹配项,但对于高 y 值,这可能会变得相当低效。

然后我想到了 x - (x % y) + y 但如果 x 是 y 的倍数,那将不起作用。当然,我始终可以使用公式 x - ((x % y)==0?y:x % y) + y 中的三元运算符对此进行调整。

有没有人有任何好的、聪明的、简单的建议或比我所提到的更好的完整解决方案?我是否遗漏了一些明显的逻辑?

我将使用 Java(这是一个更强大算法的一小部分),但如果它是纯数学的话,伪代码也同样有用。

最佳答案

如果xy是积极的 int那么这将起作用:

y * ((x-1)/y + 1);

使用 x-1让您不必担心 x 时的特殊情况是 y 的倍数.例如,如果 y = 5 , 然后为 16 <= x <= 20 ,

15 <= x-1 <= 19
(x-1)/y == 3
(x-1)/y+1 == 4
y*((x-1)/y+1) == 20

关于寻找下一个倍数的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8057792/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com