找到最接近给定自然数的数,它满足非线性条件

时间:2017-12-12 12:08:18

标签: algorithm integer

我有三个整数:ABC我需要找到最接近X的整数C。如果N是任何自然数,则ABX应满足以下等式:

A*B*X=sqrt(N)

你能帮忙算法吗?

1 个答案:

答案 0 :(得分:1)

我们可以对N的所有可能值进行二元搜索,并比较X = sqrt(N)/(A*B))的相应值,以决定进行搜索的哪一半。

python中可能的实现可能是 -

A = 5
B = 2
C = 3

left = -10000000000000
right = 10000000000000 #assuming that's the maximum value N can take
while right-left>1:
    N = (left+right)//2
    X = N**.5/(A*B)
    if X>C:
        right = N
    else:
        left = N

N = (left+right)//2
print(N)

在这种情况下输出:900