代码:
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);*/ } }