下午闲着无聊,随便拿一道题来练练,下面我就跟大家讲讲又简单到复杂的写法

最小公因数:取两个数中最大的数做除数,较小的数做被除数,用最大的数除较小数,如果余数为0,则较小数为这两个数的最大公约数,如果余数不为0,用较小数除上一步计算出的余数,直到余数为0,则这两个数的最大公约数为上一步的余数。

简单写法:

 private static int gcd(int a, int b) {return (b == 0) ? a : gcd(b, a % b);}

复杂写法: 

 static int gcd(int x, int y) {int i;if (x < y) {x = x + y;y = x - y;x = x - y;}//取两个数中最大的数做除数,较小的数做被除数while ((x % y) != 0) {i = x % y;y = i;}return y;}

简单写法解析(条件)?(A) :(B) ,这里如果满足条件的话就会输出A,反之继续执行B

另外一个有趣的点就是这个地方,这里我自己之前也一直搞不懂能保证是大的数是除数。

后来我自己动手演算了一下:假设a是10,b是9,那么%的计算结果其实是0然后余数为10,那么在第二轮循环中就变成了a就变成了10,a%b也就变成了10%9,实现大的数是除数。如果a本身是大的数这里我就不废话了,直接代入计算你就能理解了。

复杂写法解析: 这里说是复杂写法其实写的很明白了,if就是保证传输到下面的数据是大的数为除数,小的为被除数。

while循环中(表达式)为true循环体一直会一直执行,直到表达式为false则跳出循环。

基本上如果你能理解上面这两个点这道题也就能随便写了。

无聊写写的,比较适合新手,大佬勿喷,喜欢的可以点下赞,谢谢!

Java--求最小公因数相关推荐

  1. java求最小步数_关于java:查找两点之间的最小步数?

    我有一个网格,网格有两个"材料"- 地板 壁 例如 : 在此网格中,我们具有具有大小和位置的对象(对象的位置是左上角的点). 我们可以在每个对象上执行一些操作,例如- 提升 下移 ...

  2. 思维题 求最小公因数

    题目 题目大致意思就是找手帕,如果能遍历所有的位置就输出yes,不能遍历所有的就输出no,给出m,n,找东西的时候喜欢绕过n-1个点去找,比如 3个点,n=2,从a开始找 然后找c 再找b 那么就可以 ...

  3. java求最小步数,使数组值相等的最小步数 Minimum Moves to Equal Array Elements

    问题: Given a non-empty integer array of size n, find the minimum number of moves required to make all ...

  4. 用多种方法求最大公倍数和最小公因数的java代码

    用三种方法求两个数的最大公因数和最小公倍数,求三个数的最大公因数和最小公倍数 该程序的代码为: package A; import java.util.Arrays; import java.util ...

  5. Java实现最小堆一

    2019独角兽企业重金招聘Python工程师标准>>> Java实现最小堆一 堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左孩子和右孩子节点的值. ...

  6. java求n以内的质数

    java求n以内的质数 思想 素数即除了1和它本身以外不再有其他因数,最小的素数是2 方法:将n分别与2到(n+1)/2取余,若有一个值为0,则n就不为素数,反之为素数 //打印n以内的质数 // 素 ...

  7. UVA11889(给出lcm(A,B)=C中的AC求最小的B)

    题意:      给出最小公倍数LCM(A,B) = C中的A,C求最小的B. 思路:       lcm=(a*b)/gcd,把等号两侧同时除以a得到lcm/a=b/gcd左侧是已知的,右侧的gcd ...

  8. 年年有余之java求余的技巧集合

    背景 传说里玉皇大帝派龙王马上降雨到共光一带,龙王接到玉皇大帝命令,立马从海上调水,跑去共光施云布雨,但粗心又着急的龙王不小心把海里的鲸鱼随着雨水一起降落在了共光,龙王怕玉皇大帝责怪,灵机一动便声称他 ...

  9. Java求字符串中出现次数最多的字符

    Java求字符串中出现次数最多的字符  [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51933611      Java ...

  10. java求期望_Java 11的期望

    java求期望 过去的几年对Java世界一直是动荡不安的,在相当多的发行版中添加了各种各样的功能. 在开发人员社区中,人们逐渐意识到Java的开发速度不够快. 在最初的20年中,Java平台和Java ...

最新文章

  1. python绘制直方图根据不同分类_如何在python中绘制具有多个类别的直方图
  2. 数学与当代生命科学(吴家睿)
  3. OutOfMemoryError/OOM/内存溢出异常实例分析--堆内存溢出
  4. 快速安装本地yum源
  5. PyTorch框架学习九——网络模型的构建
  6. 工作流实战_21_flowable 加签 任务向前加签 向后加签
  7. windows7原版iso镜像_一定收藏,常用操作系统原版下载地址整理,Win7 Win10 Deepin...
  8. Java案例:自动点名程序
  9. Linus 将 Linux 的软盘驱动 floppy 标记为“孤立”状态
  10. ExtJs - grid 合并单元格 跨行跨列
  11. OAuth 及 移动端鉴权调研
  12. Android中为APP创建快捷方式的原理(自己的理解)
  13. ubuntu18.04安装微信
  14. 利用jQuery实现三级侧边导航栏
  15. 工具 | 常用 MySQL 内核 Debug 技巧
  16. python代码情话_程序员的土味情话~(内含表白代码)
  17. 图像分割之(四)OpenCV的GrabCut函数使用和源码解读
  18. Java Log4j和Log4j2的区别
  19. ModelSim+Synplify+Quartus的Alte
  20. MAC安装WIN10的种种问题及解决方法

热门文章

  1. Appium 测试遇到问题解决方案
  2. gearman mysql_gearman mysql持久化
  3. 如何做好售前技术支持工作 (引用)
  4. Kubernetes NUMA 感知
  5. MySQL 之 事务、存储过程、索引
  6. 编写shell脚本-sftp上传文件
  7. 生成式对抗网络(Generative Adversarial Networks,GANs)
  8. 为什么红黑树查询快_目前最详细的红黑树原理分析(大量图片+过程推导!!!)...
  9. java 转义字符使用_Java 转义字符的使用
  10. opencv中contourArea 轮廓面积计算