求最大公约数----欧几里得算法
1.欧几里得算法
可求两个正整数的最大公约数。
计算公式为gcd(a, b) = gcd(b, a % b)。
证明该算法就是证明gcd(a, b) = gcd(b, a % b),
证明过程如下:
【求最大公约数----欧几里得算法】1.设有两个正整数a,b。 有a=kb+r.(a>b)。
2.设d为a和b的任意一个公约数,记为d|a,d|b(就是d可以整除a,d可以整除b)。
3.有r=a-kb.所以r也可以被d整除,d|r。
4.所以(a,b)和(b,a%b)的公约数是一样的,即gcd(a, b) = gcd(b, a % b);
所以(b,a%b)的最大公约数就是(a,b)的最大公约数。
2.java实现欧几里得算法(递归)
//欧几里得算法实现
publicstatic int gcd(int a,int b) {
if(b==0)
return a;
int temp;
temp = a%b;
a =b;
b=temp;
return gcd(a,b);
}
}
3.java实现求两个正整数最大公约数
import java.util.Scanner;
//greatest common divisor最大公约数,欧几里得算法实现。
public class Gcd {
public static void main(String[] args) {
int a=0,b=0;
System.out.println("请输入两个正整数来求其最大公约数");
Scanner scanner = new Scanner(System.in);
a = scanner.nextInt();
b = scanner.nextInt();
if(a<=0 || b<=0) {
System.out.println("输入错误!");
}else {
System.out.println("最大公约数为:"+gcd(a,b));
}
}//欧几里得算法实现(递归)
publicstatic int gcd(int a,int b) {
if(b==0)
return a;
int temp;
temp = a%b;
a =b;
b=temp;
return gcd(a,b);
}
}
推荐阅读
- 有句话忍很久了,女生要求买房怎么就物质了()
- 基于爱,才会有“愿望”当“要求”。2017.8.12
- 先放下|先放下 ,求一个好心情
- https请求被提早撤回
- 遇到不正当请求怎么办
- 《将来的你,一定会感谢现在战胜烦恼的自己-------第四章/第十一节/用逆向思维解除烦恼》
- 保姆有偿陪伴(雇主要求过分,保姆没自尊,53岁保姆果断离职)
- 【求助】03
- 发火其实是在求救
- 问题是那些问题,解决全在自己----转逆境为喜悦