Java基础练习题——最大公约数&最小公倍数 + 水仙花数

一、求最大公约数 & 最小公倍数

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);
		}
	}
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值