zoukankan      html  css  js  c++  java
  • Least Common Multiple 多个数的最小公倍数

    Least Common Multiple

    Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
    Total Submission(s) : 43   Accepted Submission(s) : 10

    Font: Times New Roman | Verdana | Georgia

    Font Size:

    Problem Description

    The least common multiple (LCM) of a set of positive integers is the smallest positive integer which is divisible by all the numbers in the set. For example, the LCM of 5, 7 and 15 is 105.

    Input

    Input will consist of multiple problem instances. The first line of the input will contain a single integer indicating the number of problem instances. Each instance will consist of a single line of the form m n1 n2 n3 ... nm where m is the number of integers in the set and n1 ... nm are the integers. All integers will be positive and lie within the range of a 32-bit integer.

    Output

    For each problem instance, output a single line containing the corresponding LCM. All results will lie in the range of a 32-bit integer.

    Sample Input

    2
    3 5 7 15
    6 4 10296 936 1287 792 1
    

    Sample Output

    105
    10296
    

    Source

    East Central North America 2003, Practice
    这就是辗转相除法的原理。
      辗转相除法的格式
    例如,求(319,377):
    ∵ 377÷319=1(余58)
    ∴(377,319)=(319,58);
    ∵ 319÷58=5(余29),
    ∴ (319,58)=(58,29);
    ∵ 58÷29=2(余0),
    ∴ (58,29)= 29;
    ∴ (319,377)=29.
    可以写成右边的格式。
    用辗转相除法求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止.最后所得的那个最大公约数,就是所有这些数的最大公约数
    #include<iostream>
    using namespace std;
    int check(int a,int b)//辗转相除 与大小无关
    {
        if(b==0) return a;
        return check(b,a%b);
    
    
    
    }
    int main()
    {
        int n;
        int m;
        int x,y;
        int sum;
        while(scanf("%d",&n)!=EOF)
        {
            for(int i=0;i<n;i++)
            {
                sum=0;
                x=1;//处理一个输入数据的情况
                cin>>m;
                for(int j=0;j<m;j++)
                {
                cin>>y;
                sum=x/check(x,y)*y;    //最小公约数与顺序无关    
                x=sum;
                        
                    
    
                    
                
                }
                cout<<sum<<endl;
            
            
            }
        
        }
        
        
        
    
    
    
    
    
    
        return 0;
    
    }//最小公倍数=两数的乘积/最大公约
  • 相关阅读:
    堆中的路径
    二叉搜索树的操作集
    windows 利用凭据进行远程连接
    解决通过域名访问不了
    Linux 安装redis
    mybatis之resultType
    nuxt 引入swiper插件报错 Cannot resolve swiper/dist/css/swiper.css
    windows 设置连接linux redis
    linux 安装redis报gcc错误
    maven打包好的jar安装到本地库
  • 原文地址:https://www.cnblogs.com/2013lzm/p/3255980.html
Copyright © 2011-2022 走看看