在Python中,如何确定给定总数的最小整数和数

  • 本文关键字:整数 Python 何确定 python math
  • 更新时间 :
  • 英文 :


可能有一种算法,但我不确定它是什么。

对于一个整数X,其和为X的整数的最少数量是多少,其中求和的整数小于或等于Y,并且可以在和中重复。

例如:

X=95
Y=1
This is 1 (95 times)
X=39
Y=5
This is 5 (7 times) and 4 (1 time)
X=53
Y=11
This is 11 (4 times), 9 (1 time)

我看到这是一种递归地划分值,同时减少分母直到达到零,但可能有一种更优雅的方法。

更新:

两件事:

  1. 我没有意识到这不会需要超过1个级别的划分。我假设可能存在分子/分母的组合,在第二次除法后会有余数,但至少在我的用例中,没有
  2. 不,没有什么Python特定的,它只是我使用的

您可以使用divmod()来获得商和余数:

X = 95
Y = 1
quotient, remainder = divmod(X, Y)
if remainder == 0:
print(f"This is {Y} ({quotient} times)")
else:
print(f"This is {Y} ({quotient} times) and {remainder} (1 time)")

此打印:

This is 1 (95 times)
X=int(input("What is X"))
Y=int(input("What is Y"))
divisor = X // Y # integer divide 
remainder = X % Y
if remainder:
print(f"This is {Y} ({divisor} times), {remainder}")
else:
print(f"This is {Y} ({divisor} times)")

您所要求的是将一个数字划分为另一个数字,并提供余数。

使用//运算符将对两个数字进行除法运算,返回一个整数。%运算符将在对两个数字进行除法时提供余数。

def div(x, y):
return x//y, x%y

x = 95
y = 15
count, remainder = div(x, y)
text = 'This is {} ({} times)'.format(x, count)
if remainder > 0:
text += ' and {} ({} times)'.format(remainder, 1)
print(text)

最新更新