我想知道是否存在一个数学表达式,可以用来查找两个数字之间的这种关系。
一些输入和预期输出的示例如下:
Input Multiple Result
4 3 3
6 3 6
8 3 6
4 4 4
12 4 12
16 5 15
此外,沃尔夫勒姆·阿尔法(Wolfram Alpha)的以下表达式向我展示了预期的结果,但由于它们并未扩展如何做的解释,因此我无法向他们学习...
答案 0 :(得分:7)
尝试使用//
和%
运算符!
对于//
,您可以
Result = (Input // Multiple) * Multiple
通过这种方式,您可以将输入的倍数进行多次拟合-然后将此数字与倍数本身相乘,从而得到预期的结果!
编辑:如何用模%
来做?
Result = Input - (Input % Multiple)
答案 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]