您的位置:首页 > 其它

最大公约数的基本解法和辗转相除法

2017-02-20 16:16 190 查看
一、从2开始一直到两个数中最大的一个进行取余运算

代码:

package com.im;

import java.util.Scanner;

public class Demo59 {

public static void main(String[] args) {
// TODO Auto-generated method stub

Scanner input = new Scanner(System.in);

System.out.print("输入第一位数:");
int n1 = input.nextInt();
System.out.print("输入第二位数:");
int n2 = input.nextInt();

int g = 1; //公约数
int k = 2; //初始的公约数

while(k<=n1 && k<=n2){ //判断公约数于这两位数
if(n1%k==0 && n2%k==0){ //判断公约数能被这两位数整除
g = k;
}
k++;
}
System.out.println(n1+"和"+n2+"的最大公约数为:"+g);

}


}



二、使用辗转相除法

解析:两个数125和2525求最大公约数

5767/4453=1余1314

4453/1314 =3余511

1314/511=2余292

511/292=1余219

292/73=3余0 被整除,所以73为最大公约数

代码:

package com.im;

import java.util.Scanner;

public class Demo591 {

public static void main(String[] args){

Scanner input = new Scanner(System.in);

System.out.print("输入第一位数:");
int m = input.nextInt();
System.out.print("输入第二位数:");
int n = input.nextInt();

if(m>n){
while(m%n!=0){
int g = m%n; //公约数
m = n;
n = g;
}
System.out.println("最大公约数为:"+n);
}else{
while(n%m!=0){
int g = n%m; //公约数
n = m;
m = g;
}
System.out.println("最大公约数为:"+m);
}

}


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  最大公约数