java入门与进阶P-4.7
最大公约数
首先做这个题需要先复习几组概念:
如果数a能被数b整除,a就叫做b的倍数,b就叫做a的约数。
几个整数中公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。
举例:
12,16
12的约数有:1,2, 3, 4, 6, 12
16的约数有:1, 2, 4, 8, 16
故而最大的公约数为4。
求最大公约数有多种方法,常见的有辗转相除法。
1 private static int getMaxCommonDivisor(int a, int b) { 2 // 使a小,b大 3 if(a > b){ 4 // 两个数交换 5 a = a + b; 6 b = a - b; 7 a = a - b; 8 } 9 int temp = a; 10 while(temp > 0){ 11 if(a % temp == 0 && b % temp == 0){ 12 break; 13 } 14 temp--; 15 } 16 return temp; 17 }
观察性质或者案例,我们可以知道最大公约数一定满足(对于数A
和数B
来说,最大公约数C
),A%C=0
且B%C=0
。且最大。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)