算法学习——枚举之最简真分数

算法描述

统计分母在指定区间[100,999]的最简真分数(分子小于分母,且分子分母无公因数)共有多少个,并求这些最简真分数的和

算法思路

  1. 对于指定区间,分母的枚举范围为 100~999 即是输入的a与b,分子最小为1,最大则比分母少一(等于分母的话就无意义)

  2. 分子与分母与某个数整除,如果同为0,这说明分子与分母有公因数

算法实现

	int a,b;//上限与下限
	boolean isCommon = false;//分子与分母无公因数
	long m=0;//公因数的个数
	int t;
	double result=0;//和
	Scanner scanner = new Scanner(System.in);
	System.out.println("依次输入分母上限与下限:");
	System.out.println("上限:");
	a=scanner.nextInt();
	System.out.println("下限:");
	b = scanner.nextInt();
	scanner.close();
	//分母的范围 a到b
	//分子的范围1到i-1(分母-1)
	for(int i=a;i<=b;i++){
		for(int j=1;j<=i-1;j++){
			for(isCommon=false,t=2;t<=j;t++){
				if(i%t==0 && j%t==0){
					isCommon = true;
					break;
				}
			}
			if(!isCommon){
				m++;
				result = result + (double)j/i;
			}
		}
	}
	System.out.println(m);
	System.out.println(result);

结果

posted @ 2018-09-15 17:20  Stars-one  阅读(407)  评论(0编辑  收藏