程序分析:
(1)最小公倍數=輸入的兩個數之積除於它們的最大公約數,關鍵是求出最大公約數;
(2)求最大公約數用輾轉相除法(又名歐幾里德算法)
輾轉相除法:
#include<stdio.h>
int main()
{
int a,b,c;
int raw_a,raw_b;
scanf("%d %d",&a,&b);
raw_a=a;raw_b=b;
c=a%b;
while (c!=0)
{
a=b;b=c;
c=a%b;
}
printf("a與b的最大公約數是:%d\n",b);
printf("a與b的最小公倍數是:%d\n",raw_a*raw_b/b);
return 0;
}
12 56
a與b的最大公約數是:4
a與b的最小公倍數是:168
具體步驟:
#include<stdio.h>
int main()
{
int a,b,c;
int raw_a,raw_b;
scanf("%d %d",&a,&b);
raw_a=a;raw_b=b;
c=a%b;
printf("%d = %d * %d + %d\n",a,a/b,b,a%b);
while (c!=0)
{
a=b;b=c;
c=a%b;
printf("%d = %d * %d + %d\n",a,a/b,b,a%b);
}
printf("\n");
printf("a與b的最大公約數是:%d\n",b);
printf("a與b的最小公倍數是:%d\n",raw_a*raw_b/b);
return 0;
}
789 456
789 = 1 * 456 + 333
456 = 1 * 333 + 123
333 = 2 * 123 + 87
123 = 1 * 87 + 36
87 = 2 * 36 + 15
36 = 2 * 15 + 6
15 = 2 * 6 + 3
6 = 2 * 3 + 0
a與b的最大公約數是:3
a與b的最小公倍數是:119928
1221 451
1221 = 2 * 451 + 319
451 = 1 * 319 + 132
319 = 2 * 132 + 55
132 = 2 * 55 + 22
55 = 2 * 22 + 11
22 = 2 * 11 + 0
a與b的最大公約數是:11
a與b的最小公倍數是:50061