数学函数可查找范围内数字的最大倍数

时间:2018-08-28 14:10:04

标签: python math

我想知道是否存在一个数学表达式,可以用来查找两个数字之间的这种关系。

一些输入和预期输出的示例如下:

Input    Multiple   Result
4        3          3
6        3          6
8        3          6
4        4          4
12       4          12
16       5          15

此外,沃尔夫勒姆·阿尔法(Wolfram Alpha)的以下表达式向我展示了预期的结果,但由于它们并未扩展如何做的解释,因此我无法向他们学习...

Biggest multiple of 4 from 10

Biggest multiple of 4 from 12

4 个答案:

答案 0 :(得分:7)

尝试使用//%运算符!

对于//,您可以

Result = (Input // Multiple) * Multiple

通过这种方式,您可以将输入的倍数进行多次拟合-然后将此数字与倍数本身相乘,从而得到预期的结果!

编辑:如何用模%来做?

Result = Input - (Input % Multiple)

取自MCO's answer!

答案 1 :(得分:4)

这是我要怎么做:

return int(input / multiple) * multiple

它会截断除法,以便获得整数,可以将其相乘。

答案 2 :(得分:3)

您可以为此取模。例如,要计算小于或等于13的4的最大倍数:

13 % 4 = 1
13 - 1 = 12

在python中,可能看起来像这样:

def biggest_multiple(multiple_of, input_number):
    return input_number - input_number % multiple_of

所以您将其用作:

$ biggest_multiple(4, 9)
8
$ biggest_multiple(4, 12)
12

答案 3 :(得分:2)

这可能是微不足道的,但该死的易于理解。要考虑倍数是负数还是零

Multiple=[3,3,3,4,4,5,0,-5]
Input=[4,6,8,4,12,16,1,8]
Result=[]
for input,multiple in zip(Input,Multiple):
    if(multiple):
        Result.append((range(multiple,input+1,abs(multiple)))[-1])
    else:
        Result.append(0)
print(Result)

输出:

[3, 6, 6, 4, 12, 15, 0, 5]