1.求 a和b 的最小公倍数
方法一:首先找出 a,b之间较大的数赋值给m,然后m一直加1,直到m%a==0并且m%b==0,此时m就是a和b的最小公倍数。代码如下
#include <stdio.h>
int main() {
int a = 0;
int b = 0;
//输入
scanf("%d %d", &a, &b);
int m = (a>b?a:b);
while(m%a!=0 || m%b!=0)
{
m++;
}
printf("%d\n", m);
return 0;
}
方法二(比方法一高效):假设 a*i 即为最小公倍数,那么 a*i % b 必定等于0,如果不为零,i 每次加一。
int main() {
int a = 0;
int b = 0;
//输入
scanf("%d %d", &a, &b);
int i = 1;
while (a * i % b != 0)//判断
{
i++;
}
printf("最小公倍数数为%d\n", a * i);
return 0;
}
2.求a和b的最大公约数
1.如果a和b的最小公倍数为k,则a和b的最大公约数等于 a*b/k。
int main() {
int a = 0;
int b = 0;
//输入
scanf("%d %d", &a, &b);
int i = 1;
while(a*i % b != 0)//判断
{
i++;
}
//a和b的最小公倍数是k
//最大公约数 = a*b/k;
int k = a*i;
printf("最大公约数为%d", a * b / k);
return 0;
}
2.求最大公约数,辗转相除法
int main() {
int a = 0;
int b = 0;
//输入
scanf("%d %d", &a, &b);
int c;
while (c = a % b)
{
a = b;
b = c;
}
printf("最大公约数为%d", b);
return 0;
}
最小公倍数 = 两数相乘 / 最大公约数
最大公约数 = 两数相乘 / 最小公倍数