寻找20以内某两个数相除,其结果离黄金分割点0.618最近

题目:
寻找某两个数相除,其结果 离黄金分割点 0.618最近;
要求:1)分母和分子不能同时为偶数
2)分母和分子 取值范围在[1-20]

分析:可采用嵌套for循环,分别遍历分子和分母,求出相除结果,若求出的结果小于上一次,则将上一次结果替换为本次结果。

代码如下:

public class goldpoint {

	public static void main(String[] args) {
		//寻找某两个数相除,其结果 离黄金分割点 0.618最近

		//分母和分子不能同时为偶数
		//分母和分子 取值范围在[1-20]
	
		int fenzi = 0;//分子
		int fenmu = 0;//分母
		float mindiff = 30;//距离黄金分割点的最小差值
		int finalfenzi = 0;//最终求得的分子
		int finalfenmu = 0;//最终求得的分母
		for(fenmu = 1;fenmu<=20;fenmu++) {
			for(fenzi = 1;fenzi<=20;fenzi++) {
				if((fenzi%2 == 0) && (fenmu%2==0) )//如果分子分母同时为偶数,则跳出本次循环
					continue;
				float value = (float)fenzi/fenmu;//求值
				float diff = Math.abs(value-0.618f);//求差值的绝对值
				if(diff<mindiff) {//若本次结果小于上次,则更新变量
					mindiff = diff;
					finalfenzi = fenzi;
					finalfenmu = fenmu;
				
			}
		}

	}
		System.out.println("最贴近黄金分割点0.618数为:" + "分子" + finalfenzi + "分母" + finalfenmu);
	}
}

运算结果

最贴近黄金分割点0.618数为:分子8分母13

你可能感兴趣的:(java)