// 求N个正整数的最小公倍数。 #include<stdio.h> int GCD(int x,int y); //X,Y的最大公约数 int LCM(int x,int y); // X,Y的最小公倍数 int main() { int n,m,*array,i,j; scanf("%d",&n); while(n) { scanf("%d",&m); array = new int[m]; for(i=0;i<m;i++) scanf("%d",&array[i]); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// for(j=0;j<m-1;j++) //问题可能出现在这里 { array[j+1]=LCM(array[j],array[j+1]); //我是通过两两求最小公倍数从而求得多个数的最小公倍数 } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// printf("%d\n",array[m-1]); n--; } return 0; }
int GCD(int x,int y) //X,Y的最大公约数 { int z; if(x>y) { z=x; x=y; y=z; } while((z=y%x)!=0) { y=x; x=z; } return z; }
int LCM(int x,int y) // X,Y的最小公倍数 { int z; z=(x*y)/GCD(x,y); return z; }
[此贴子已经被作者于2005-7-18 17:19:57编辑过]