输入两个正整数m和n,求其最大公约数和最小公倍数。
分析:
求最大公约数采用辗转相除法:
m、n为两个正整数,通常使m>=n。
m/n=c……d;
把n作为新的m,d作为新的n,再次相除,知道余数c=0。此时的n就是最大公约数。
求最小公倍数:
最小公倍数*最大公因数=两数乘积
代码:
import java.util.Scanner;
/**
* 最大公约数
* 最小公倍数
* @author cheng
*
*/
public class Six {
//求最大公约数:辗转相除法
public int gongyueshu(int m,int n){
if(n>m){
int temp=0;
temp=n;
n=m;
m=temp;
}
while(m%n!=0){
int a=m%n;
m=n;
n=a;
}
return n;
}
//求最小公倍数
public int gongbeishu(int m,int n){
int b=m*n/(gongyueshu(m, n));
return b;
}
public static void main(String[] args){
Six six=new Six();
System.out.println("请输入一个正整数");
Scanner in=new Scanner(System.in);
int m=in.nextInt();
System.out.println("请输入另一个正整数");
int n=in.nextInt();
System.out.println("最大公约数为:"+six.gongyueshu(m,n));
System.out.println("最小公倍数为:"+six.gongbeishu(m, n));
in.close();
}
}
输出结果:
请输入一个正整数
6
请输入另一个正整数
8
最大公约数为:2
最小公倍数为:24