最大最小公倍数
蓝桥杯 ALGO-2 最大最小公倍数
问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 106。
分析:贪心算法,尽量找到三个数两两互质所得的最小公倍数就是最大的。
若n,n-1,n-2两两互质,则最小公倍数就是三者的乘积。
数论知识有,任意大于1的两个相邻的自然数互质。
若n为奇数,则n-1是偶数,n-2是奇数;那么2就不是它们的公约数,又这三个数相邻,所以大于2的数都不可能成为它们的公约数,因此最小公倍数就是这三个数的乘积。
若n为偶数,则n-1是奇数,n-2是偶数;那按照n(n-1)(n-2)来计算是不行的,那么就改成n(n-1)(n-3),如果这三个数两两互质就输出。
但是因为n与n-3相差3,那么一个数可以被3整除,另一个也是可以;又因为n为偶数,n-3为奇数,所以2不可能成为它们的公因子;对于大于3的数,就不可能成为这三个数的公约数,因此只需再对3进行判断。
如果n能整除3,那么,n(n-1)(n-3)就肯定不行了,因为n和n-3有了公约数3,最小公倍数肯定比较小了,那么就只能继续判下一个即n(n-1)(n-4)而这样n-4又是偶数,不行,继续下一个n(n-1)(n-5) = n^3 -6n^2 + 5n 而如果这个可以 那个其值肯定要小于(n-1)(n-2)(n-3) = n^3 -6n^2+11n-6(对于n>1来说都成立),而(n-1)(n-2)(n-3)由上一个奇数结论可知是一个符合要求的,因此到n-5就不用判断了。直接选答案为(n-1)(n-2)*(n-3);
而n不能整除3,那么结果就是n(n-1)(n-3),因为n和n-3都不能整除3,此时n-1能不能整除3都无关紧要了。而对于其它数 都是不可能的。上面已证。
import java.util.Scanner; public class Main { public static void main(String ars[]){ Scanner sc = new Scanner(System.in); long n = sc.nextInt(); sc.close(); if(n==1){ System.out.println(1); } else{ if(n==2){ System.out.println(2); }else { if(n%2 != 0){ long result1 = n*(n-1)*(n-2); System.out.println(result1); }else{ if(n%3 != 0){ long result2 = n*(n-1)*(n-3); System.out.println(result2); }else{ long result3 = (n-3)*(n-1)*(n-2); System.out.println(result3); } } } } } }
__EOF__

本文链接:https://www.cnblogs.com/techgy/p/12849570.html
关于博主:I am a good person
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~