zoukankan      html  css  js  c++  java
  • 最大最小公倍数

    蓝桥杯 ALGO-2 最大最小公倍数

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

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

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

    分析:贪心算法,尽量找到三个数两两互质所得的最小公倍数就是最大的。
    若n,n-1,n-2两两互质,则最小公倍数就是三者的乘积。
    数论知识有,任意大于1的两个相邻的自然数互质。
    若n为奇数,则n-1是偶数,n-2是奇数;那么2就不是它们的公约数,又这三个数相邻,所以大于2的数都不可能成为它们的公约数,因此最小公倍数就是这三个数的乘积。
    若n为偶数,则n-1是奇数,n-2是偶数;那按照n(n-1)(n-2)来计算是不行的,那么就改成n(n-1)(n-3),如果这三个数两两互质就输出。
    但是因为n与n-3相差3,那么一个数可以被3整除,另一个也是可以;又因为n为偶数,n-3为奇数,所以2不可能成为它们的公因子;对于大于3的数,就不可能成为这三个数的公约数,因此只需再对3进行判断。

    如果n能整除3,那么,n(n-1)(n-3)就肯定不行了,因为n和n-3有了公约数3,最小公倍数肯定比较小了,那么就只能继续判下一个即n(n-1)(n-4)而这样n-4又是偶数,不行,继续下一个n(n-1)(n-5) = n^3 -6n^2 + 5n 而如果这个可以 那个其值肯定要小于(n-1)(n-2)(n-3) = n^3 -6n^2+11n-6(对于n>1来说都成立),而(n-1)(n-2)(n-3)由上一个奇数结论可知是一个符合要求的,因此到n-5就不用判断了。直接选答案为(n-1)(n-2)*(n-3);

    而n不能整除3,那么结果就是n(n-1)(n-3),因为n和n-3都不能整除3,此时n-1能不能整除3都无关紧要了。而对于其它数 都是不可能的。上面已证。

    import java.util.Scanner;
    
    public class Main {
    	public static void main(String ars[]){
    		Scanner sc = new Scanner(System.in);
    		long n = sc.nextInt();
                    sc.close();
    		if(n==1){
    			System.out.println(1);
    		}
    		else{
    			if(n==2){
    				System.out.println(2);
    			}else {
    				if(n%2 != 0){
                                            long result1 = n*(n-1)*(n-2);
    					System.out.println(result1);
    				}else{
    					if(n%3 != 0){
                                                    long result2 = n*(n-1)*(n-3);
    						System.out.println(result2);
    					}else{
                                                    long result3 = (n-3)*(n-1)*(n-2);
    						System.out.println(result3);
    					}
    				}
    			}
    		}
    	}
    
    }
  • 相关阅读:
    GitLab CI/CD的官译【原】
    Gearman介绍、原理分析、实践改进
    Golang逃逸分析
    Go 程序是怎样跑起来的
    分布式系统的常见玩法
    开发更高可用、高质量的服务的一些建议
    理解 Kubernetes 的亲和性调度
    服务发现对比:Zookeeper vs etcd vs Consul
    探索etcd,Zookeeper和Consul一致键值数据存储的性能
    CentOS 7 安装无线驱动
  • 原文地址:https://www.cnblogs.com/techgy/p/12849570.html
Copyright © 2011-2022 走看看