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

Posted kexing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法学习——枚举之最简真分数相关的知识,希望对你有一定的参考价值。

算法描述

统计分母在指定区间[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);

结果

技术分享图片

以上是关于算法学习——枚举之最简真分数的主要内容,如果未能解决你的问题,请参考以下文章

1447. 最简分数

ajax之最简说明

九度oj 题目1465:最简真分数

c语言约分最简分式原理,算法基础:约分最简分式

1062 最简分数 (20 分)(~这题让我学到很多~,多看以下两种思路!!,精简代码量~)

最简真分数