1. 程式人生 > >算法學習——枚舉之最簡真分數

算法學習——枚舉之最簡真分數

統計 .com bubuko 真分數 分享 算法思路 整除 == 說明

算法描述

統計分母在指定區間[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);

結果

技術分享圖片

算法學習——枚舉之最簡真分數