java计算最大公约数和最小公倍数,java求最大公倍数
问题描述:
给定一个正整数n,问是否可以从1到n中选择三个数,它们的最小公倍数是多少?
输入格式:
输入一个正整数n。
输出格式:
输出表示找到的最小公倍数的整数。
样本输入:
九
样本输出:
504
数据和参与度:
1=N=106
在线视频教程推荐:java课程
想法:
首先声明几个概念:
两个非零相邻自然数的最小公倍数是它们的乘积;两个相邻奇数的最小公倍数是它们的乘积;两个相邻偶数的最小公倍数(除了0)是它们乘积的一半。
现在上升到三个数的最小公倍数,根据n的奇偶性有两种情况:
1.当N是奇数时:N,n-1,n-2的乘积
2.当n是偶数时:n-1,n-2和n-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的倍数
例子如下:
导入Java . util . scanner;
公共类Main {
公共静态void main(String[] args) {
扫描仪输入=新扫描仪(system . in);
long N=input . nextlong();
long temp=0;
如果(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);
}
否则{
system . out . println(N *(N-1)*(N-2));
}
}
}提示:考虑的情况,注意在这个问题中使用long。
推荐java相关文章教程:java开发入门以上是java中如何计算最小公倍数的细节。请多关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。