Problem Description
求n个数的最小公倍数。
Input
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。
Output
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。
Sample Input
2 4 6
3 2 5 7
Sample Output
12
70
1 #include <stdio.h> 2 int get_lcm(int a,int b); 3 4 int main(){ 5 int n; 6 int result; 7 int number; 8 9 while((scanf("%d",&n))!=EOF){ 10 result=1; 11 while(n--){ 12 scanf("%d",&number); 13 14 result=get_lcm(result,number); 15 } 16 17 printf("%d\n",result); 18 } 19 return 0; 20 } 21 22 int get_lcm(int a,int b){ 23 int temp; 24 int remainder; 25 int A; 26 int B; 27 28 A=a; 29 B=b; 30 31 if(a<b){ 32 temp=a; 33 a=b; 34 b=temp; 35 } 36 37 while(a%b){ 38 remainder=a%b; 39 a=b; 40 b=remainder; 41 } 42 43 return A/b*B; //不能写成A*B/b,因为可能会溢出 44 }
时间: 2024-10-25 09:47:16