求最小公倍数首先要知道最小公倍数的概念
最小公倍数是能同时被a和b整除的最小整数。
这里假设输入a = 12,b = 8。
法1:
求a和b的最小公倍数,那么a和b 的最小公倍数就不可能小于a与b这两个数中的最大值,所以先令a,b这两个数中的最大值来同时除以a,b,若能整除,则a与b 中的最大值就为最小公倍数;若不能,则max++
代码实现:
#include <stdio.h>
int MAX(int x,int y);//求最大值函数
int main()
{
int a,b;
scanf("%d%d",&a,&b);
int max = 0;
max = MAX(a,b);
while(max)
{
if(max % a == 0 && max % b == 0)
{
printf("最小公倍数为:%d",max);
break;
}
max++;
}
return 0;
}
int MAX(int x,int y)
{
if(x>y)
return x;
else
return y;
}
法2:
a*b/最大公约数=最小公倍数,这样一来就既要求最小公倍数还要求最大公约数,所以这种方法比较适合既需要求最小公倍数也需要求最大公约数的
代码实现:
#include <stdio.h>
int main()
{
int a,b;
int count = 0;//定义count来表示公约数
scanf("%d%d",&a,&b);
for(int i=1;i<=a;i++)
{
if(a % i == 0)
{
if(b % i == 0)
count = i;
}
}
printf("%d\n",count);//此时count就是最大公约数
int cride = 0;
cride = a*b/count;//此时cride就是最小公倍数
printf("%d\n",cride);
return 0;
}
法3
用a的倍数来除以b,若能整除,则求出了最小公倍数。这里可以用一个while循环来实现
代码实现:
#include<stdio.h>
int main()
{
int a,b;
int i = 1;
scanf("%d%d",&a,&b);
while(a*i % b != 0)
{
i++;
}
printf("%d",a*i);//a*i就为最小公倍数
return 0;
}