java求两个正整数最大公约数和最小公倍数完整程序

如题,大家可以参考参考

package lesson12;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class lesson12 {
	/**
	 * 输入两个正整数m和n,求其最大公约数和最小公倍数
	 */
	public static void main(String args[]) {
		// List<Integer> list=new ArrayList<>();
		Scanner scan = new Scanner(System.in);
		while (true) {
			List<Integer> list1 = new ArrayList<>();
			List<Integer> list2 = new ArrayList<>();
			List<Integer> list3 = new ArrayList<>();
			System.out.println("输入两个整数");
			int a = scan.nextInt();
			int b = scan.nextInt();
			int s=a;
			int s1=b;
			for (int i = 2; i <= a; i++) {
				while (a % i == 0) {
					a = a / i;
					list1.add(i);
				}
			}
			for (int i = 2; i <= b; i++) {
				while (b % i == 0) {
					list2.add(i);
					b = b / i;
				}
			}
			for (int i = 0; i < list1.size(); i++) {
				for (int j = 0; j < list2.size(); j++) {

					if (list1.get(i).equals(list2.get(j))) {
						list3.add(list1.get(i));// 最大公约数
						list2.remove(j);
						break;
					}
				}
			}
			int sum = 1;
			System.out.print("这两个数的最大公约数为:");
			for (int i = 0; i < list3.size(); i++) {
				sum = sum * list3.get(i);
				if(i<list3.size()-1)
				{
				System.out.print(list3.get(i)+"*");
				}
				else
				{
					System.out.print(list3.get(i)+"=");
				}
			}
			     System.out.println(sum);    
			    //由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积
			     System.out.println("这两个数的最小公倍数为:"+(s*s1)/sum);
		}
		
	}
}

猜你喜欢

转载自673390302.iteye.com/blog/2324471