题目 1011: [编程入门]最大公约数(最大公因数)与最小公倍数
题目描述
输入两个正整数m和n,求其最大公约数和最小公倍数。
输入
两个整数
输出
最大公约数,最小公倍数
样例输入
5 7
样例输出
1 35
#include <stdio.h>
int gcd (int a,int b)
{
int i=1,last=1,min=1;
if(a<b)
min = a;
else
min = b;
while(i<=min)
{
if(a%i==0 && b%i==0)
last = i;
i++;
}
return last;
}
int lcm (int a,int b)
{
int i=1,last=1,min=1,z;
if(a<b)
min = a;
else
min = b;
while(i<=min) {
if(a%i==0 && b%i==0)
last = i;
i++;
}
return z=a*b/last;
}
int main(void)
{
int a, b;
scanf("%d%d", &a, &b);
printf("%d ", gcd(a, b));
printf("%d\n", lcm(a, b));
return 0;
}
算法原理:
1、最大公约数法
最小公倍数=两整数的乘积÷最大公约数
2、乘穷举法
将大数依次乘N(N为从1开始的自然数),对得到的数判断其是否整除小数。
3、加穷举法
将大数依次加1,对得到的数判断其是否可整除两数。