/** * @author nonefly * 2015年8月27日 */public class Gcd { /** * 暴力尝试 */ public static int gcd0(int a, int b) { if(a < 0 || b < 0) return -1; for (int i = a > b ? b : a; i > 1; i--) { if(a % i == 0 && b % i == 0) return i; } return 1; } /** 解法一 * 欧几里得算法(辗转相除法) * 求两个数(a b,假设a > b)最大公约数, * 每次用较大数a除b取余, * 余数c不为0则让较大数等于较小数,较小数等于余数,即: * a = b; b= c; */ public static int gcd1(int a, int b) { if(a < 0 || b < 0) return -1; if(a == b || a == 0) return b; if(b == 0) return a; if(a < b) return gcd1(a, b % a); else return gcd1(b, a % b); } /** * 更相减损术 来自《九章算术》 * ps:我也不知道这算法来头,只是知道算法思想,查后才知它的出处和名字~ * */ public static int gcd2(int a, int b) { if(a < 0 || b < 0) return -1; if(a == b) return a; if((a & 1) > (b & 1)) return gcd2(a, b >> 1); if((a & 1) < (b & 1)) return gcd2(a >> 1, b); if((a & 1) == 0 && (b & 1) == 0) return gcd2(a >> 1, b >> 1) << 1; return gcd2(Math.abs(a - b), b > a ? a : b); } public static void main(String[] args) { System.out.println(gcd0(99, 66)); }}
详细解决方案
java实现多种形式求解最大公约数
热度:106 发布时间:2016-04-22 19:47:45.0
相关解决方案
- java 乱码 汉字是 ? 如何转换成汉字
- java web 登录次数限制,该如何解决
- java 工商银行网银支付 B2B的 都亟需什么,需要注意什么
- Java Applet程序从JDK6升级到7时遇到的有关问题
- java web 视频相干
- 请教一个关于链接后缀的有关问题(java web 应用)
- java 系统单点登录解决方案
- java.lang.NumberFormatException: For input string: "id"该如何处理
- java.lang.NoSuchMethodException: setId([Ljava.lang.String;)解决方法
- java 获取客户端IP解决办法
- JAVA 后台怎么获得前台页面FCKedit编辑器中的内容以及内容的样式
- java 正则化匹配有关问题
- java web 受阻
- java.lang.IllegalStateException: No output folder,该怎么解决
- java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.makeAccess,该如何解决
- java 乱码有关问题 急求大神
- java EE错误如何解决阿,都是过了,没有能解决的!
- java 工程打包有关问题 多谢各位大神!多谢
- JAVA WEB导航条,该怎么处理
- java.sql.SQLException: Access denied for user 'root'@'localhost' (using password,该如何处理
- java 中Node 有关问题
- 关于 java 引述传递和值传递,你的知否
- 吐了,java Timer 终止不了。
- Java Web 学习中有关问题,请高手指教
- java web中的url地址小疑点。
- java web开发解决办法
- java.lang.NullPointerException解决方法
- 关于 java cast 有关问题,你明白不
- java ftp 下传和上载乱码有关问题
- java web项目上的一些文件