java中求最小公倍数的方法-创新互联

这篇文章运用简单易懂的例子给大家介绍java中求最小公倍数的方法,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

创新互联公司公司2013年成立,先为上犹等服务建站,上犹等地企业,进行企业商务咨询服务。为上犹企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

问题描述:

已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数大可以为多少。

输入格式:

输入一个正整数N。

输出格式:

输出一个整数,表示你找到的最小公倍数。

样例输入:

9

样例输出:

504

数据规模与约定:

1 <= N <= 106

思路:

首先声明几个概念:

两个非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));
        }
    }


}

题目:输入两个正整数m和n,求其大公约数和最小公倍数。

程序分析:利用辗除法。

示例二:


package one;

import java.util.*;public class ProOne {

public static void main(String[] args)

{

int m=0,n=0,m1=0,n1=0;

int a;

Scanner scanner = new Scanner(System.in);

System.out.println("请输dao入m的值:");

m=scanner.nextInt();

System.out.println("请输入n的值:");

n=scanner.nextInt();

//将输入的m和n值备份;

m1=m;

n1=n;

//取得两个数相除的余数;

a=m%n;

while(a!=0)

{

m1=n1;n1=a;a=m1%n1;

}

System.out.println("m,n的大公约数为:"+n1);

//求两个数字的最小公倍数的方法为:(两个数的乘积)/(两个数字的大公约数);

System.out.println("m,n两个数的最小公倍数为:"+m*n/n1);

}

}

技巧:考虑N<3的情况,而且这道题注意用long。

关于java中求最小公倍数的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


新闻名称:java中求最小公倍数的方法-创新互联
文章出自:http://hbruida.cn/article/hgscc.html