用两种算法求两个正整数的最大公约数和最小公倍数

算法1设计思路:辗转相除法
(1).判断两个数的大小,b比a小不用换,否则互换位置
(2)利用递归,大的数除以小的数,若余数不为0,则让较小的数(b)做被除数,余数(k)做除数,直到k=0,此时b为最大公约数
运用递归将求余之后的值作为b,将之前的b作为a直到求余值为0位置结束循环
(3)两数相乘/最大公约数就是最小公倍数

算法2设计思路:辗转相减法
(1)判断两个数的大小,b比a小不用换,否则互换位置
(2)用大的数减去小的数,若差不为0,则让较小的数(b)做被减数,差做减数,直到差为0,此时b为最大公约数
(3)两数相乘/最大公约数就是最小公倍数
算法1源代码:

import java.util.Scanner;
public class zuoye2_1 {

public static void main(String[] args){
	//定义两个整数型
	int a;
	int b;
	//调用java.util.Scanner可以获得从键盘输入的数字
	Scanner sc=new Scanner(System.in);
	System.out.println("请输入一个数:");
	a=sc.nextInt();//nextInt()方法用来获取int数
	System.out.println("请输入另一个数:");
	b=sc.nextInt();
	/*调用后面的静态方法最大公约数Max(),最小公倍数Min(),
	 * 判断两个数的大小,b比a小不用换,否则互换位置
	 */
	if(a

算法2源代码:

import java.util.Scanner;
public class zuoye2_2 {

public static void main(String[] args){
	//定义两个整数型
	int a;
	int b;
	//调用java.util.Scanner可以获得从键盘输入的数字
	Scanner sc=new Scanner(System.in);
	System.out.println("请输入一个数:");
	a=sc.nextInt();//nextInt()方法用来获取int数
	System.out.println("请输入另一个数:");
	b=sc.nextInt();
	/*调用后面的静态方法最大公约数Max(),最小公倍数Min(),
	 * 判断两个数的大小,b比a小不用换,否则互换位置
	 */
	if(a

算法1程序流程图:
用两种算法求两个正整数的最大公约数和最小公倍数_第1张图片
算法2程序流程图:
用两种算法求两个正整数的最大公约数和最小公倍数_第2张图片
算法一测试截屏:
用两种算法求两个正整数的最大公约数和最小公倍数_第3张图片
算法二:测试截屏
用两种算法求两个正整数的最大公约数和最小公倍数_第4张图片

你可能感兴趣的:(用两种算法求两个正整数的最大公约数和最小公倍数)