该区域是整数。
给定一个区域,我想绘制代表平方米的方块。因此,例如给定30个区域,我想绘制一个6 x 5或5 x 6的矩形,但不是2 x 15的矩形,因为这看起来太长而且很薄。
我也可以接受在最后一行中绘制较少的正方形,例如对于33个区域,我可以绘制6 x 5矩形和最后一行3个正方形。
我尝试了素数分解,但例如597我得到3和199,太长而且很薄。
我尝试了二次函数,使用公式
0 = x^2 + x - area
所以我会将积极的解决方案作为一方使用,而另一方则是1个单位。
但是我没有得到整数结果,向上或向下舍入会修改结果区域。
还有其他想法吗?这有一个已知的算法吗? 这个问题:Fastest way to calculate rectangle sides from area?已经关闭,但我认为这是一个有效的问题。
答案 0 :(得分:1)
计算区域的平方根;为你的身边上下四舍五入。如果它太小,请将较小的值加1。
示例:
答案 1 :(得分:0)
假设您更喜欢最接近正方形的形状,您可以从 sqrt(区域)的整数部分开始,逐个添加宽度和高度:
width=[sqrt(area)] // Integer part of Square root
heigh=width
while ((height*width)<area){
if (height<width)
{height=height+1}
else
{width=width+1}
}