java计算最大公约数和最小公倍数,java求最大公倍数

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: