求任意三个整数的最小公倍数。
过程:每一次操作都把当前最小的那个数加上他的初始值。
所以,首先,我们要判断三个数是否相等,如果不相等则求出三个值里面的最小值并得到它的索引,加上对应的初始值,如此循环,直到三个数相同。
import java.util.Scanner;
/*
求三个整数的最小公倍数
*/
public class _6_2 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int[] num=new int[3];
for(int i=0;i<3;i++){
int m=scanner.nextInt();
num[i]=m;
}
int reslut=fun(num);
System.out.println("最小公倍数为:"+reslut);
}
//判断三个数是否相同
public static boolean isSame(int[] arr){
boolean flag=false;
int count=0;
for(int i=0;i<2;i++){
if(arr[i]==arr[i+1]){
count++;
}
}
if(count==2){
flag=true;
}
return flag;
}
//求数组里最小数的索引
public static int minIndex(int[] arr){
int min=arr[0];
int index=0;
for(int i=1;i<3;i++){
if(arr[i]<min){
min=arr[i];
index=i;
}
}
return index;
}
//求最小公倍数
public static int fun(int[] arr){
int a=arr[0];
int b=arr[1];
int c=arr[2];
int index;
while (!isSame(arr)){
//打印出每种不一样的情况
for(int i=0;i<3;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
index=minIndex(arr);
//不相同则最小的那个数加上最开始对应的值
switch (index){
case 0:
arr[0]=a+arr[0];
break;
case 1:
arr[1]=b+arr[1];
break;
case 2:
arr[2]=c+arr[2];
break;
}
}
//输出全等情况
for(int i=9;i<3;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
return arr[0];//当三个数相同时返回即为最小公倍数
}
}