一、求最大公约数 & 最小公倍数
1. 概念解释
公约数:能同时被 m 和 n 除尽的数;
公倍数:能同时除尽 m 和 n 的数;
2. 代码实现
/**
* for循环 练习1:输入两个正整数m和n,求其最大公约数和最小公倍数
* (例如:12和20的最大公约数是4,最小公倍数是60)
*/
public void forTest1(){
Scanner scan = new Scanner(System.in);
System.out.println("请输入两个正整数:");
int m = scan.nextInt();
int n = scan.nextInt();
int max = (m > n) ? m : n; //最小公倍数,一定会比两个数中的 "较大值" 还要大
int min = (m < n) ? m : n; //最大公约数,一定会比两个数中的 "较小值" 还要小
// 公约数:能同时被 m 和 n 除尽的数
for(int i = min; i > 0; i--){
if(m % i == 0 && n % i == 0){
System.out.println("最大公约数 = " + i);
break;
}
}
// 公倍数:能同时除尽 m 和 n 的数
for(int i = max; i <= m * n; i++){ //最小公倍数的上限:m * n
if(i % m == 0 && i % n == 0){
System.out.println("最小公倍数 = " + i);
break;
}
}
}
二、输出所有水仙花数
1. 概念解释
水仙花数:一个3位数,其各个位上数字的"立方和" == 其本身;
【例如:153 = 1³ + 5³ + 3³】
2. 代码实现
/**
* for循环 练习2:输出所有的水仙花数
* (一个3位数,其各个位上数字的"立方和" == 其本身)
* (例如:153 == 1³ + 5³ + 3³)
*/
public void forTest2(){
int num;
for(int i = 100; i <= 999; i++){
// 重点就在于获取其各位上的数字
int bai = i / 100;
int shi = i % 100 / 10;
int ge = i % 10;
if((bai * bai * bai + shi * shi * shi + ge * ge * ge) == i){
System.out.println(i);
}
}
}