求最小公倍数算法:
最小公倍数=两整数的乘积÷最大公约数
求最大公约数算法:
(1)辗转相除法
有两整数a和b:
① a%b得余数c
② 若c=0,则b即为两数的最大公约数
③ 若c≠0,则a=b,b=c,再回去执行①
例如求27和15的最大公约数过程为:
27÷15 余1215÷12余312÷3余0因此,3即为最大公约数
import java.util.Scanner;
public class chapter3 {
public static void main(String args[])
{
//计算两个非零正整数的最大公约数和最小公倍数
int a1,a2;
System.out.println("请输入两个非零正整数: ");
Scanner reader=new Scanner(System.in);
a1=reader.nextInt();
a2=reader.nextInt();
int m=a1, n=a2;
while(m%n!=0)
{
int r=m%n;
m=n;
n=r;
}
System.out.println(a1+", "+a2+" 的最大公约数是:"+n);
System.out.println(a1+", "+a2+" 的最小公倍数是:"+(a1*a2/n));
}
}
⑵ 相减法
有两整数a和b:
① 若a>b,则a=a-b
② 若a<b,则b=b-a
③ 若a=b,则a(或b)即为两数的最大公约数
④ 若a≠b,则再回去执行①
例如求27和15的最大公约数过程为:
27-15=12( 15>12 ) 15-12=3( 12>3 )
12-3=9( 9>3 ) 9-3=6( 6>3 )
6-3=3( 3==3 )
因此,3即为最大公约数