辗转相除法

文章介绍了辗转相除法(欧几里得算法)用于求解两个正整数最大公约数的原理,并通过一个Java程序示例展示了如何找出11到2020之间所有分子和分母互质的既约分数的数量。
摘要由CSDN通过智能技术生成

辗转相除法(也称欧几里得算法)是一种用来求两个正整数的最大公约数的算法。

具体来说,辗转相除法的基本思路是:

确定两个正整数 a 和 b,其中 a 是大于 b 的。
计算 a 除以 b 的余数 r。
如果 r=0,则 b 就是 a 和 b 的最大公约数,算法结束。
否则,将 b 赋值给 a,将 r 赋值给 b,并回到第二步。
举个例子,如果我们要求 36 和 24 的最大公约数,可以按照如下步骤进行计算:

a=36,b=24
36 ÷ 24 = 1 … 12(12 为余数)
a=24,b=12
24 ÷ 12 = 2 … 0(0 为余数)
根据辗转相除法的定义,在第三步时算法结束,因此 36 和 24 的最大公约数就是 12。

辗转相除法是一种非常有效的算法,时间复杂度为 O(log n),在计算机科学中广泛应用。

下面通过一道例题来巩固说明

如果一个分数的分子和分母的最大公约数是 1,这个分数称为既约分数。

public class Main {
    public static void main(String[] args) {
        int count = 0;
        for (int i = 1; i <= 2020; i++) {
            for (int j = i + 1; j <= 2020; j++) {
                if (gcd(j, i) == 1) {
                    count++;
                }
            }
        }
        //小在分子 大在分母   1/1  特殊情况
        System.out.println(count * 2 + 1);
    }

    // a大 b小
    public static int gcd(int a, int b) {
        return  b == 0 ? a:gcd(b, a%b);


    }
}

例如 3/4,1/8,7/1都是既约分数。

请问,有多少个既约分数,分子和分母都是 11 到 20202020 之间的整数(包括 11 和 20202020)?

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值