题目:从键盘输入两个整数,输出它们的最大公约数和最小公倍数
代码:
import com.sun.org.apache.xpath.internal.objects.XString;
import java.util.Scanner;
public class demo {
public static void main(String[] args) {
// 求最大公约数和最小公倍数
Scanner sc = new Scanner(System.in);
System.out.println("请输入两个数");
int num1 = sc.nextInt();
int num2 = sc.nextInt();
// 最大公约数
// 得到这两个数中的最大值和最小值
int min = num1<num2?num1:num2;
int max = num1>num2?num1:num2;
// 从最小值开始循环,若最小值是最大值的因数,则最小值就是最大公约数
for(int i = min ; i>1;i--){
// 最大值和最小值公共的因数,因为循环迭代是递减,所以第一个公约数就是最大公约数
if(max%i==0&&min%i==0){
System.out.println("最大公约数:"+i);
//结束循环
break;
}
}
// 最小公倍数
// 最小公倍数是一定是大于或等于最大值,因为不知道要循环几次,所以循环条件没写,这种情况下可以用while写
for(int i =1;;i++){
if(i*max%min==0){
System.out.println("最小公倍数:"+i*max);
//结束循环
break;
}
}
// while写这个循环有一点不好,就是定义的i变量不能随着while循环的结束而被回收
/*int i =1;
while(i*max%min!=0){
i++;
}
System.out.println("最小公倍数:"+i*max);*/
}
}