求两个数的最大公约数(Euclid算法)
求两个数 p 和 q 的最大公约数(greatest common divisor,gcd),利用性质
如果 p > q, p 和 q 的最大公约数 = q 和 (p % q)的最大公约数。
证明:见 http://blog.csdn.net/niushuai666/article/details/7278027
public class Euclid{
    // recursive inplementation
    public static int gcd(int p, int q){
        if(q == 0) return p;
        else
        {
            StdOut.println( q + " " + p % q);
            return gcd(q, p % q);
        }
    }
    // non-recursive implementation
    public static int gcd2(int p, int q){
    while(q != 0){
        int temp = q;
        q = p % q;
        p = temp;
    }
    return p;
    }
    public static void main(String[] args){
        int p = Integer.parseInt(args[0]);
        int q = Integer.parseInt(args[1]);
        int d  = gcd(p, q);
        int d2 = gcd2(p,q);
        StdOut.println("gcd(" + p + ", " + q + ") = " + d);
        StdOut.println("gcd(" + p + ", " + q + ") = " + d2);
    }
}
运行结果

求两个数的最大公约数(Euclid算法)的更多相关文章
- python 函数求两个数的最大公约数和最小公倍数
		
1. 求最小公倍数的算法: 最小公倍数 = 两个整数的乘积 / 最大公约数 所以我们首先要求出两个整数的最大公约数, 求两个数的最大公约数思路如下: 2. 求最大公约数算法: 1. 整数A对整数 ...
 - c语言实践:求两个数的最大公约数
		
我的思路是这样的:比如12和16这两个数.先理解一下概念,什么叫最大公约数.就是12有很多个因数,16也有很多个因数,这两堆因数中有一些重合的因数,在这些重合的因数中找到那个最大的.那么最大公约数一定 ...
 - 求两个数的最大公约数&求N个数的最大公约数
		
一.求两个数的最大公约数 如何编程计算N个数的最大公约数(Greatest common divisor)呢?第一想法那便是两两计算,但是往往最简单的想法是不怎么靠谱的.下面用递归来解决.递归有一大好 ...
 - Java数据结构与算法之---求两个数的最大公约数(欧几里得算法)
		
一个简单的小算法来获取两个数的最大公约数, public class Test { public static void main(String[] args) { long result = gcd ...
 - C++中用辗转相除法求两个数的最大公约数和最小公倍数
		
两个数的最大公约数:不能大于两个数中的最小值,算法口诀:小的给大的,余数给小的,整除返回小的,即最大公约数,(res=max%min)==0? max=min,min=res return min; ...
 - C++扬帆远航——14(求两个数的最大公约数)
		
/* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:gongyueshu.cpp * 作者:常轩 * 微信公众号:W ...
 - C实现辗转相除法求两个数的最大公约数
		
什么是辗转相除法? 辗转相除法(又名欧几里德算法),它主要用于求两个正整数的最大公约数.是已知的最古老的算法. 用辗转相除法求132和72的最大公约数的步骤: 132 / 72 = 1 ... 60 ...
 - 求两个数的最大公约数(Java)
		
获得两个随机数(100以内),并放入数组中 public int[] getTwoRandom(){ int[] t = new int[2]; Random rand = new Random(); ...
 - python 求两个数的最大公约数
		
给定两个整数a,b,求他们的最大公约数 def gcd(a,b): if a<b: a,b=b,a while(a%b != 0): c = a%b a=b b=c return b a,b = ...
 
随机推荐
- Kia's Calculation(HDU 4267)
			
Problem Description Doctor Ghee is teaching Kia how to calculate the sum of two integers. But Kia is ...
 - Uoj #131. 【NOI2015】品酒大会  后缀数组,并查集
			
#131. [NOI2015]品酒大会 统计 描述 提交 自定义测试 一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品酒家”和“首席猎手”两个奖项, ...
 - hdoj 3836 Equivalent Sets【scc&&缩点】【求最少加多少条边使图强连通】
			
Equivalent Sets Time Limit: 12000/4000 MS (Java/Others) Memory Limit: 104857/104857 K (Java/Other ...
 - 验证码  jsp生成
			
<%@ page contentType="image/jpeg" import="java.awt.*, java.awt.image.*,java.util.* ...
 - KVM地址翻译流程及EPT页表的建立过程
			
本博文为原创,遵循CC3.0协议,转载请注明出处:http://blog.csdn.net/lux_veritas/article/details/9284635 ------------------ ...
 - 使用Pager-taglib进行分页
			
在.net中,我们有分页控件.在java中,我们有分页标签库.他们都已经为我们封装好了,我们只需要给这几个参数:数据.当前页码.每页记录数,就能完成分页,所以他们是大同小异的. 今天来说说Pager- ...
 - [D3] 10. Creating Axes with D3
			
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
 - java多线程之消费者生产者模式 (转)
			
/*@author shijin * 生产者与消费者模型中,要保证以下几点: * 1 同一时间内只能有一个生产者生产 生产方法加锁sychronized * 2 同一时间内只能有一个消费者消费 消费方 ...
 - Qss All
			
/* * OOMidi application style sheet */QFrame#transportToolButtons{border: 0;spacing: 0;margin: 0;pad ...
 - PureMVC(JS版)源码解析(十一):Model类
			
这篇博文讲PureMVC三个核心类——Model类.Model类的构造函数及工厂函数[即getInstance()方法]和View类.Controller类是一样的,这里就不重复讲解了,只 ...