java中如何计算最小公倍数
问题描述:
已知一个正整数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中如何计算最小公倍数的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Java 8引入了Stream API,提供了一种强大且表达力丰富的处理数据集合的方式。然而,使用Stream时,一个常见问题是:如何从forEach操作中中断或返回? 传统循环允许提前中断或返回,但Stream的forEach方法并不直接支持这种方式。本文将解释原因,并探讨在Stream处理系统中实现提前终止的替代方法。 延伸阅读: Java Stream API改进 理解Stream forEach forEach方法是一个终端操作,它对Stream中的每个元素执行一个操作。它的设计意图是处
