蓝桥杯 ALGO-2 算法训练 最大最小公倍数

算法训练 最大最小公倍数

  1. 问题描述
    
    已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
    输入格式
    
    输入一个正整数N。
    输出格式
    输出一个整数,表示你找到的最小公倍数。
    样例输入
    9
    样例输出
    504
    数据规模与约定
    
    1 <= N <= 106。
    

2.主要代码:

import java.util.Scanner;
public class ALGO_2_1 {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		long n=sc.nextInt();
		long out=0;
		if(n%2==1){
			out=n*(n-1)*(n-2);
		}
		else{
			if(n%3==0) out=(n-1)*(n-2)*(n-3);
			else out=n*(n-1)*(n-3);
				//95152 95151 95150 95149
		}
		System.out.println(out);
	}

}

3.反思总结
最小公倍数的求法有两个:
(1) 分解质因数
(2)公式法
对于两个数求最小公倍数,如果这两个数是互为质数(即两个或多个整数的公因数只有1的非零自然数),那么他们的最小公倍数就是两个数的乘积。相邻的两个自然数互为质数 ,对于三个数,左右两个互为质数,但是第一个和第二个不一定。
**a.**如果第一个数为奇数,那么这三个数可以这么表示,奇-偶-奇,第一和第三个数之间相差为2,但是奇数本身的因数里面是没有2的,相邻的三个数的变化范围为2,如果2不是,其他就更不可能是公因子了。此时最大就是相乘
**b.**如果第一个数字是偶数,那么这三个数这么表示,偶-奇-偶,
如果将他们相乘,最后的结果是要除以2的,直接缩小了一倍,那么我们可以改变这三个值得其中一个,然后使得结果尽可能的大,可以将第三个数变小,这是三个数字就变成偶-奇-奇,此时这三数的变化范围最大到了3。如果第一个数字的公因子里面有3,那么第三个数一定有3,结果就会再除以3,这是我们不希望的;这时我们如果变小中间这个数,结果变为偶-偶-奇,结果是三个数字变化中最小的一个,而且结果至少要除以一个2,更小了;于是乎,最好的安排,是整体向后移一个,此时就又变成了奇-偶-奇

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值