概念:

最大公约数:两个整数共有因子中最大的一个

方法一:

如果两个数相等,则最大公约数为它本身,两个数不等,则用两个数依次除 两个数中最小的一个到 1,直到找到同时能被两个数除尽的那个数

代码清单:

       public static int gcd1(int x, int y) {
int result = 0; // 最大公约数
int min = x > y ? y : x; // 两个整数中最小的数
if (x == y) {
result = x;
} else {
for (int i = min; i >= 1; i--) {
if (x % i == 0 && y % i == 0) {
result = i;
break;
}
}
}
return result;
}

方法二:辗转相除法

假设用f(x,y) 表示x , y 的最大公约数,取 k = x/y , b = x%y ,则 x = ky + b ,如果一个数能够同时整除  x 和 y ,则 x 和 y 的公约数与 b 和 y 的公约数是相同的,其最大公约数也是相同的,则有 f(x,y) = f(y , x%y)  (x>=y>0)。如此便可把原问题转化为求两个更小数的最大公约数,知道其中的一个数为0,剩下的另外一个数就是两者的最大公约数。

示例如下:

F(42,30) = F(30,12) = F(12,6) = F(6, 0) = 6

代码清单:

public static int gcd2(int x, int y) {
return (y == 0) ? x : gcd(y, x % y);

方法三:

方法二中用到了取模运算。但对于大整数而言,取模运算(用到除法)是非常昂贵的开销。能不能不用取模式运算呢?

采用类似辗转相除法的分析,如果一个数能同时整除x和y ,则必能同时整除x-y和y

即x 和 y 的公约数和 x - y 和 y的公约数是相同的,其最大公约数也是相同的。即

F(x , y)  = F (x-y , y)

示例如下:

F(42,30) = F(30,12) = F(12,18) = F(18, 12)= F( 12 ,6 ) = F( 6, 6) = F( 6, 0) = 6

代码清单:

public int gcd3(int x, int y) {
if (x < y) {
return gcd3(y, x);
}
if (y == 0) {
return x;
} else {
return gcd3(y, x-y);
}
}

java常见面试题2:求出两个正整数的最大公约数的更多相关文章

  1. java常见面试题及答案

    java常见面试题及答案 来源 https://blog.csdn.net/hsk256/article/details/49052293 来源 https://blog.csdn.net/hsk25 ...

  2. java常见面试题及答案 1-10(基础篇)

    java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...

  3. Java 常见面试题(一)

    1)什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件.Java被设 ...

  4. 【转载】JAVA常见面试题及解答(精华)

     JAVA常见面试题及解答(精华)       1)transient和volatile是java关键字吗?(瞬联) 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: ...

  5. JAVA常见面试题问题简述(持续更新中)

    JAVA常见面试题问题简述 1. springcloud和dubbo的区别 ①相比之下springcloud 的社区会更加活跃,解决问题的速度也会越来越快,dubbo相对来说如果碰到没有解决的问题,就 ...

  6. java常见面试题总结2

    JAVA必背面试题和项目面试通关要点 简单来讲,equals方法主要是用来判断从表面上看或者从内容上看,2个对象是不是相等. 一 数据库 1.常问数据库查询.修改(SQL查询包含筛选查询.聚合查询和链 ...

  7. Java常见面试题-1

    问: 1 面向对象的特征有哪些方面? 2 访问修饰符public,private,protected,以及不写(默认)时的区别? 3  String 是最基本的数据类型吗? 对象类型 基本类型 4  ...

  8. Android开发,java开发程序员常见面试题,求100-200之间的质数,java逻辑代码

    public class aa{ public static void main (String args []){ //author:qq986945193 for (int i = 100;i&l ...

  9. 每天写两个的java常见面试题—final 和static 的用法

    第一次写随笔,可能写的比较乱,更多的是作为自己记忆一些知识的方式.所有记录的东西都是自己的一些理解,很多语言可能还是从其他大牛的博客里面搬过来的. 一.static的作用: static的的作用从三个 ...

随机推荐

  1. POJ - 3665 icow

    Fatigued by the endless toils of farming, Farmer John has decided to try his hand in the MP3 player ...

  2. Java中的变量之成员变量、本地变量与类变量

    Java中的变量: 1.成员变量(实例变量,属性) 2.本地变量(局部变量) 3.类变量(静态属性) 一.成员变量(实例变量,属性) 1.1-成员变量:(在类中定义,    访问修饰符   修饰符   ...

  3. CSS Box Model All In One

    CSS Box Model All In One CSS 盒子模型 All In One CSS Box Model CSS Box Model Module Level 3 W3C Working ...

  4. image auto downloader

    image auto downloader icons killer / js crawler http only + same-origin OK "use strict"; / ...

  5. 联合登录 & OAuth 2.0 & OpenID

    联合登录 & OAuth 2.0 & OpenID 第三方联合登录一般可以降低网站的获客成本,所以一般的网站都会做一些联合登录,常用的就是QQ.微信.微博; https://www.z ...

  6. APC推出鞋底缓震科技 两款中高端跑鞋将陆续上市

    近日,英国知名运动品牌APC(公司编号:08703733)推出了全新的鞋底缓震科技 NOVR,该项技术将首先应用于两款跑步鞋上,随后陆续应用到其他重点鞋类产品. 是对于各大运动品牌来说,鞋底研发一直是 ...

  7. 加州金融专访NGK,就NGK DeFi+展开讨论

    近日,加利福尼亚金融日报联合数家知名媒体就DeFi+行业专访了NGK团队代表特德惠斯基. 首先,加利福尼亚金融日报专栏记者迈尔斯表示,目前区块链领域,去中心化金融(DeFi+)的概念是目前市场上面最火 ...

  8. NGK是公链吗?NGK为何会这么火?

    NGK号称区块链3.0的经典代表之作,公链底层技术开源发布,支撑百万级应用场景,集合了其他公链的优点,不仅拥有超高的TPS,军业级DPOSS共识机制,还有极高的网络确认速度和转账速度.更重要的是无需矿 ...

  9. 「NGK每日快讯」12.3日NGK公链第30期官方快讯!

  10. 统一数据管理工具 —— CloudQuery v1.3.3 上线!

    前言 岁末临近,让我们跟随着新春的脚步,一起去看看 CloudQuery 今年最后一次更新吧! 新增功能 一.Oracle - 查看表结构 Oracle 数据源中,可查看各表结构信息(列详情和表注释等 ...