Lowest Common Multiple Plus
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 31453 Accepted Submission(s): 12802
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 gcd(int a,int b)
3 {
4 //辗转相除法
5 int temp;
6 if(a<b)
7 {
8 temp=a;
9 a=b;
10 b=temp;
11 }
12 if(a%b==0)
13 return b;
14 return gcd(b,a%b);
15 }
16 int main()
17 {
18 int a,b,n;
19 while(scanf("%d",&n)!=EOF)
20 {
21 scanf("%d\n",&a);
22 if(n==1)
23 printf("%d",a);
24 else
25 {
26 n--;
27 while(n--)
28 {
29 scanf("%d",&b);
30 //防止数据越界,先相除,再相乘
31 a=b/gcd(a,b)*a;
32 }
33 printf("%d\n",a);
34 }
35 }
36 return 0;
37 }
杭电acm2028--最小公倍数
时间: 2024-10-09 11:43:40