算法训练 最大最小公倍数

来源:互联网 发布:ios程序员烂大街 编辑:程序博客网 时间:2024/05/16 00:29

  算法训练 最大最小公倍数  
时间限制:1.0s   内存限制:256.0MB
      
问题描述

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

输入格式

输入一个正整数N。

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

1 <= N <= 106

这道题有两种结果,即 奇数-偶数-奇数 和偶数-奇数-偶数

当是奇数-偶数-奇数的情况时,a 和a-1 a-2 就是互质的,所以最大的最小公约是就是a*(a-1)*(a-2)

当是偶数-奇数-偶数的情况时 a 和a-2都是偶数,能被2整除,所以选择a a-1 a-3  但此时又会出现新的问题就是

a 和 a-3可能是3的倍数,能被3整除.  再选择a-4,选择a-4后。a 和a-4都是偶数,又不行。所以此时输出

(a-1)*(a-2)*(a-3)


import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);long a = sc.nextLong();//输入的数最大为10^6次   所以必须为longlong b = 0;if (a <= 2 && a >= 1) {//当输入的a小于3的时候b = a;} else {//当输入的a大于等于3的时候if (a % 2 == 1) {//当a是奇数的时候b = a * (a - 1) * (a - 2);} else if (a % 2 == 0) {//当a是偶数的时候if (a%3==0){//当a和a-3能被3整除的时候b = (a-1) * (a-2) * (a-3);}else {//a和a-3不能被3整除 即三个数互质b = a * (a - 1) * (a - 3);}}}System.out.println(b);}}




0 0
原创粉丝点击