您的位置:首页 > 编程语言 > Java开发

java求最大公约数和最小公倍数

2017-06-14 20:33 363 查看
其实就是反复利用乘2和除以2来获得最终的结果,

求最大公约数

代码如下:
public class ZuiDaGongYueShu {
public static int gcd(int a, int b){
int m,n,r;

if (a > b){
m = a;
n = b;
} else{
m = b;
n = a;
}

if (n == 0) {
return m;
}

if (m%2 == 0 && n % 2 == 0){
return 2*gcd(m/2,n/2);
}
if (m%2== 0){
return gcd(m/2,n);
}
if(n % 2 == 0){
return gcd(m,n/2);
}
return gcd((m+n)/2,(m - n)/2);
}
public static void main(String[] args) {
int a , b ,r;
Scanner sc = new Scanner(System.in);
System.out.println("输入第一个值:");
a = sc.nextInt();
System.out.println("输入第二个值:");
b = sc.nextInt();
r = gcd(a,b);
System.out.println(r);
}
求最小公倍数其实

代码如下:
public class ZuiXiaoGongYueShu {
public static int gcd(int a, int b){
int m,n,r;

if (a > b){
m = a;
n = b;
} else{
m = b;
n = a;
}

if (n == 0) {
return m;
}

if (m%2 == 0 && n % 2 == 0){
return 2*gcd(m/2,n/2);
}
if (m%2== 0){
return gcd(m/2,n);
}
if(n % 2 == 0){
return gcd(m,n/2);
}
return gcd((m+n)/2,(m - n)/2);
}
public static int lem(int a,int b){
int c,d;
c = gcd(a,b);
d = (a*b)/c;
return d;
}

public static void main(String[] args) {
int a , b ,r;
Scanner sc = new Scanner(System.in);
System.out.println("输入第一个值:");
a = sc.nextInt();
System.out.println("输入第二个值:");
b = sc.nextInt();
r = lem(a,b);
System.out.println(r);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  class java