Lowest Common Multiple Plus HDU2028



Lowest Common Multiple Plus

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 38992    Accepted Submission(s): 16067


Problem Description
求n个数的最小公倍数。
 

Input
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。
 

Output
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。
 

Sample Input
   
   
   
   
2 4 6 3 2 5 7
 

Sample Output
   
   
   
   
12 70
 

Author
lcy
 

Source
C语言程序设计练习(五)
 


辗转相除
#include <iostream>
#include <string.h>
#include <cstdio>
using namespace std;

__int64 fac(__int64 i,__int64 j)
{
    int k = 1,m;
    if(i < j) swap(i,j);
    while(k != 0)
    {
        k = i % j;
        i = j;
        j = k;
    }
    return i;
}

int main()
{
    int N;
    int  i,j;
    __int64 o,p,re;

    while(cin >> N)
    {
        if(N == 0 && N == 1) {cout << N << endl;continue;}
        cin >> o >> p;
        re = fac(o,p);
        o = o/ re * p;
        for(i = 3;i <= N;i++)
        {
             cin >> p;
            re = fac(o,p);
            o = o / re * p;
        }
        cout << o << endl;
    }
 return 0 ;
}

你可能感兴趣的:(Lowest Common Multiple Plus HDU2028)