package com.demo; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; /** * Created by 莫文龙 on 2018/3/27. */ //输入两个正整数m和n,求最大的公约数和最小公倍数 public class Demo6 { public static void main(String[] args) throws IOException { Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); int b = scanner.nextInt(); //求出一个数的所有的质数 ArrayList<Integer> alist = new ArrayList<>(); ArrayList<Integer> blist = new ArrayList<>(); int num = a; for (int i = 2 ; i <= num ; i ++) { if (num % i == 0) { alist.add(i); num = num / i; i = 1; } } if (alist.size() == 1 || alist.size() == 0) alist.add(1); int numb = b; for (int i = 2 ; i <= numb ; i ++) { if (numb % i == 0) { blist.add(i); numb = numb / i; i = 1; } } if (blist.size() == 1 || blist.size() == 0) blist.add(1); Collections.sort(alist); Collections.sort(blist); //求最大公约数 int max = 1; labe:for (int i = alist.size() - 1 ; i >= 0 ; i --) { for (int j = blist.size() - 1 ; j >= 0 ; j --) { if (alist.get(i) == blist.get(j)) { max = alist.get(i); break labe; } } } //最小公倍数 int min = a * b; if (a < b) { //a一定要是最大的 int temp = b; b = a; a = temp; } for (;;) { int r = a % b; if (r == 0) { System.out.println(a + "和" + b + "的最小公倍数为:" + min / b); break; }else { a = b; b = r; } } System.out.println("a和b的最大的公约数" + max); } }
50道编程题之06:输入两个正整数m和n,求最大的公约数和最小公倍数
猜你喜欢
转载自blog.csdn.net/weixin_38104426/article/details/79712817
今日推荐
周排行