理论部分(辗转相除法)
代码部分
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//求最大公约数
int gcd(int a, int b)
{
int temp;
while (b > 0)
{
temp = a % b;//创建一个变量存储a%b的余数
a = b;//根据算法逻辑,用上一个式子的除数作下一个式子的被除数(所以a=b),上一个式子的余数作为下一个式子的除数(b=temp),直到余数为0;
b = temp;
}
return a;//最后一定是返回除数
}
int lcm(int a, int b)
{
return (a * b) / gcd(a, b);//利用公式 ab的乘积除以他们的最大公约数得到的结果为最小公倍数
}
int main()
{
int a, b;
printf("请输入两个正整数:\n");
scanf("%d %d", &a, &b);
int max = gcd(a, b);
int min = lcm(a, b);
printf("最大公约数为:%d\n", max);
printf("最小公倍数为:%d\n", min);
return 0;
}
暴力枚举法
/*枚举法:从1开始,直到i能够把a,b全部整除*/
int main()
{
int a = 0;
int b = 0;
int i = 1;
scanf("%d %d", &a, &b);
while (i % a != 0 || i % b != 0)
{
i++;
}
printf("%d", i);
}
/*乘法枚举*/
int main()
{
long long int a = 0;
long long int b = 0;
int i = 1;
scanf("%d%d",&a,&b);
while (a * i % b)
{
i++;
}
printf("%lld", a*i);
}
希望能对读者有所帮助!