前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法训练 最大最小公倍数

算法训练 最大最小公倍数

作者头像
AI那点小事
发布2020-04-20 17:42:48
1K0
发布2020-04-20 17:42:48
举报
文章被收录于专栏:AI那点小事AI那点小事

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

输入格式 输入一个正整数N。

输出格式 输出一个整数,表示你找到的最小公倍数。 样例输入 9 样例输出 504 数据规模与约定 1 <= N <= 106。

(PS:下面是我的代码。)

代码语言:javascript
复制
import java.math.BigInteger;
import java.util.Scanner;

public class Main {

    public static BigInteger GCD(BigInteger a , BigInteger b){
        BigInteger gcd ;
        while( !b.equals(BigInteger.ZERO)){
            gcd = a.remainder(b);
            a = b;
            b = gcd;
        }
        gcd = a;
        return gcd;
    }

    public static BigInteger Max_GCM(BigInteger n){
        int cnt = 0;
        BigInteger mul = n;
        BigInteger j = n.subtract(BigInteger.ONE);
        while(cnt != 2){
            if ( GCD(mul,j).equals(BigInteger.ONE)){
                mul = mul.multiply(j);
                cnt++;
            }
            j = j.subtract(BigInteger.ONE);
        }
        return mul;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        String str = in.next();
        BigInteger n = new BigInteger(str);
        BigInteger TWO = new BigInteger("2");
        if ( n.compareTo(TWO) == 0){
            System.out.print(2);
        }else if ( n.compareTo(BigInteger.ONE) == 0){
            System.out.print(1);
        }else if ( n.compareTo(BigInteger.ZERO) <= 0){
            System.out.print(0);
        }else{
            BigInteger max = Max_GCM(n);
            System.out.print(max);
        }
        in.close();
    }
}

(PS:百度了下,由于后台测试数据出问题,所以判的只有60分)

这里写图片描述
这里写图片描述

(PS:下面是网上的AC代码,和自己相比,自己简直low到家了。数学结论不知道,真心不知道那些参加ACM的同学是怎么挺过来的。。。)

代码语言:javascript
复制
#include<iostream>
using namespace std;
int main()
{
    long long n,ans;
    cin>>n;
    if(n<=2)
    ans=n;
    else if(n%2==1)
    ans=n*(n-1)*(n-2);
    else
    {
        if(n%3==0)
        ans=(n-1)*(n-2)*(n-3);
        else
        ans=n*(n-1)*(n-3);
    }
    cout<<ans<<endl;
    return 0;
} 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档