找到两个整数的最小值,而它们的乘积大于一个值

时间:2021-05-31 22:03:28

标签: python

我有一个问题如下: 你能帮我解决这个问题吗?

输入 = 整数 N

找到两个数字,比如 x 和 y,使得 x 和 y 的乘积大于或等于 N,并且 x 和 y 的和应该是最小的。

输出: x 和 y 的最小总和。

我使用过这段代码,它在某些情况下有效,但在某些情况下不起作用。

Nt = [528,576,2673]
def Min(N):
    a = int(N**0.5)
    if a^2==N:
        return 2*a-1
    elif a*(a+1)>=N:
        return 2*a+1
    else:
        return 2*a+2


for i in range(3):
    N = Nt[i]
    print(Min(N))

对于上面的例子,输出应该是[48, 104, 28]

2 个答案:

答案 0 :(得分:1)

python 中的幂运算是 ** 标记,正如您在 a 的定义中使用的那样。

def Min(N):
    a = int(N**0.5)
    if a**2==N:
        return 2*a
    elif a*(a+1)>=N:
        return 2*a+1
    else:
        return 2*a+2

它修复了。

另外,请注意您的示例已损坏,您没有定义 Nt

答案 1 :(得分:0)

n = int(input())

def func(n):
    for sum in range(n):
        for x in range(sum):
            for y in range(sum):
                if x * y >= n:
                    return x + y

print(func(n))


# For n = 2673 output not correct 28, because 28**2 only 784 and lower than 2673
相关问题