问题
寻找某两个数,其商离黄金分割点 0.618 最近,要求
分母和分子不能同时为偶数;
分母和分子取值范围在 [1-20]。
解答
public class TheGoldenSection
{
public static void main (String[] args)
{
TheGoldenSection tgs = new TheGoldenSection();
tgs.calculate();
}
public void calculate ()
{
int top = 1;
int bottom = 1;
double min = 1;
for(double i = 1; i <= 20; i++)
{
for(double j = i+1; j <= 20; j++)
{
double t = i/j - 0.618;
if(t < 0)
{
t = -t;
}
if( t < min)
{
min = t;
top = (int)i;
bottom = (int)j;
}
}
}
System.out.println(top + "/" + bottom);
}
}