我正在寻找一种算法来找到两个整数值x,y
,以使它们的乘积尽可能接近给定的双精度值,k
而它们的差异很小。
示例:矩形的面积是k=21.5
,我想找到该矩形的边长度,约束条件是它们必须是整数,在这种情况下,一些可能的解决方案是(不包括排列)(x=4,y=5)
,(x=3,y=7)
以及愚蠢的解决方案(x=21,y=1)
事实上,对于这对夫妇,我们和这对夫妇(3,7)
有同样的区别(21,1)
21.5-3*7=0.5 = 21.5-21*1
而对于(4,5)
这对夫妇
21.5-4*5=1.5
但是这对夫妇(4,5)
更可取,因为他们的区别是1
,所以矩形“更平方”。
有没有一种方法可以提取那些x,y
差异最小并且它们的乘积与 k 的差异也最小的值?