1. 程式人生 > >求兩個數的最大最大公約數和最小公倍數

求兩個數的最大最大公約數和最小公倍數

兩個 rem pac [] while ext bre list AS

package java;

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

public class java {
/**
* 輸入兩個正整數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);
}

}
}

求兩個數的最大最大公約數和最小公倍數