求最大公约数最小公倍数

 1 /*求n个数的的最小公倍数,这里运用了辗转相除法*/
2
3 #include <stdio.h>
4
5 int gcd(int a,int b) //最大公约数算法
6
7 {
8
9 if(a%b==0)
10
11 return b;
12
13 else return
14
15 gcd(b,a%b);
16
17 }
18
19 int lcm(int a,int b) //最小公倍数(两数相乘后除以最大公约数)
20
21 {
22
23 return a/gcd(a,b)*b; //注意先除后乘,否则会造成结果过大
24
25 }
26
27 int main()
28
29 {
30
31 int i,repeat,n,a,min;
32
33
34
35 scanf("%d",&repeat);
36
37 while(repeat--)
38
39 {
40
41 scanf("%d%d",&n,&min);
42
43 for(i=1;i<n;i++)
44
45 {
46
47 scanf("%d",&a);
48
49 min=lcm(a,min); //逐个求最小公倍数,又避免了定义数组(不知道数组长度)
50
51 }
52
53 printf("%d\n",min);
54
55 }
56
57 return 0;
58
59 }
posted @ 2011-11-20 11:33  弄月吟风  阅读(209)  评论(0编辑  收藏  举报