public class GoldCut { public static void main(String[] args) { final double GOLDEN_SECTION_RATIO=0.618; int i,j,finalI=1,finalJ=1; double diff,minDiff=1; for(i=1;i<20;i++) //分子i从1至19 { for(j=i+1;j<=20;) //分母j从i+1开始 { diff=Math.abs((double)i/j-GOLDEN_SECTION_RATIO); if(diff<minDiff) {//如果i/j更接近0.618 finalI=i; finalJ=j; minDiff=diff; } if(i%2==0) //如果分子是偶数,分母只取i之后的奇数 j+=2; else j++; } } System.out.println("距离黄金分割点0.618最近的两个数相除是"+finalI+"/"+finalJ+ "="+(double)finalI/finalJ); } }