choupiaoyi 2018-11-04
算法解析:求两个数的最小公倍数,可转化为先用欧几里德算法求两个数的最大公约数,将所求出的最大公约数除以两个数的乘积,就得到两个数的最小公倍数
#include<stdio.h>
int gcd(int x,int y); //最大公倍数声明
int hcd(int x,int y,int z); //最小公约数声明
int main()
{
int a,b,g,h;
scanf("%d %d",&a,&b);
if(a == 0||b == 0)
{
printf("输入数据错误!");
return 1;
}
g = gcd(a, b); //最大公约数调用
h = hcd(a, b, g); //最小公倍数函数调用
printf("两个数的最小公倍数是:%d",h);
return 0;
}
//求最大公约数
int gcd(int x,int y)
{
int r;
do
{
r = x % y;
x = y;
y = r;
}while(r != 0);
return x;
}
//求最小公倍数
int hcd(int x,int y,int z)
{
return (x * y / z);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
测试结果:
1⃣️
6 5
两个数的最小公倍数是:30
2⃣️
8 12
两个数的最小公倍数是:24