HDOJ_杭电2028_Lowest Common Multiple Plus 多个数字的最小公倍数

最小公倍数的规模化。。。


代码:

/***** HDOJ_2028_Lowest Common Multiple Plus ********/

/******** written by C_Shit_Hu ************/

////////////////公倍数///////////////

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

/***** problem source ********/

/******** written by C_Shit_Hu ************/

////////////////题目属性///////////////

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

Input
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。
 
Output
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。
 
Sample Input
2 4 6
3 2 5 7

Sample Output
12
70
 

*/
/****************************************************************************/


// 求最小公倍数的集合化。。。

#include <stdio.h>
#include <stdlib.h>

_int64 gbs( _int64 a, _int64 b)       //求最小公倍数
{
	_int64 A=a, B=b, tem, yu ;
    if( a<b )      //注意:a*b可能超过int类型
    {
        tem = a;
		a = b;
		b = tem;
	}
	while(yu != 0)
	{
		yu = a%b;
	    a = b;
        b = yu; 
	}
	return A*B/a ;

}

int main()
{
    _int64 n, i, temp, a = 1;
    while((scanf("%I64d",&n))!=EOF)
    {
        a = 1;
        for(i=0;i<n;i++)
        {
            scanf("%I64d",&temp);
            a = gbs(a,temp);   // 输入的数据两两相比,求公倍数
        }
        printf("%I64d\n",a);
    }
    return 0;
}


/******************************************************/
/********************  心得体会  **********************/
/*
果然是水题。。。
还做的那么慢。。

  水水更健康!!!
*/
/******************************************************/


你可能感兴趣的:(HDOJ_杭电2028_Lowest Common Multiple Plus 多个数字的最小公倍数)