java中如何计算最小公倍数
Java  /  管理员 发布于 8年前   408
问题描述:
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式:
输入一个正整数N。
输出格式:
输出一个整数,表示你找到的最小公倍数。
样例输入:
9
样例输出:
504
数据规模与约定:
1 <= N <= 106
在线学习视频教程推荐:java课程
思路:
首先声明几个概念:
两个非0相邻自然数的最小公倍数是它们的乘积;相邻两个奇数的最小公倍数是它们的乘积;相邻两个偶数(0除外)的最小公倍数是它们乘积的一半。
现在上升到三个数的最小公倍数,要按照N的奇偶性分两种情况:
一、当n为奇数:n、n-1、n-2的乘积
二、当n为偶数:n-1、n-2、n-3是一组极大解,如果答案要大于当前值,只能是大于这3个数的乘积,那么只能把其中一个数变成n,并且三个数也要两两互质。n、n-2、n-3偶偶奇明显不互质;n、n-1、n-3偶奇奇;n、n-1、n-2偶奇偶明显不互质。
那么答案只能是n-1、n-2、n-3或者是n、n-1、n-3。但是n、n-3虽然是一个奇数,一个偶数,但是它们不连续可能不互质例如5,6,3三个数。
n为奇数:n、n-1、n-2
n为偶数: n是3的倍数 n-1、n-2、n-3
n不是3的倍数 n、n-1、n-3
示例如下:
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner input=new Scanner(System.in); long N=input.nextLong(); long temp=0; if(N<=2){System.out.println(N); } else if(N%2==0){temp=(N-1)*(N-2)*(N-3);if(N%3!=0){ temp=Math.max(temp,N*(N-1)*(N-3));}System.out.println(temp); } else {System.out.println(N*(N-1)*(N-2)); } }}
技巧:考虑N<3的情况,而且这道题注意用long。
推荐java相关文章教程:java开发入门
以上就是java中如何计算最小公倍数的详细内容,更多请关注其它相关文章!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号