题目:求最小公倍数
题目要求:
正整数a和正整数b的最小公倍数,是指能被a和b整除的最小的正整数。请你求a和b的最小公倍数。比如输入5和7,5和7的最小公倍数是35,则需要返回35。
方法一:试除法
1.先找出两个数字哪个大
//法一:
int c = a > b ? a : b;//使用条件操作符
//法二:
if (a > b)
c = a;
else
c = b; //使用if else 语句
2.使用试除法,一个一个往过试
while (1)
{
if (c % a == 0 && c % b == 0)
break;
c++;
}
整体代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a, b;
scanf("%d %d", &a, &b);
int c = a > b ? a : b;
/*if (a > b)
c = a;
else
c = b;*/
while (1)
{
if (c % a == 0 && c % b == 0)
break;
c++;
}
printf("%d", c);
return 0;
}
注意:若题目要求整数过大,可进行如下修改:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
long long a, b; //a、b 改为long long类型
scanf("%lld %lld", &a, &b);//%d 改为 %lld
long long c = a > b ? a : b;//c 改为long long类型
/*if (a > b)
c = a;
else
c = b;*/
while (1)
{
if (c % a == 0 && c % b == 0)
break;
c++;
}
printf("%lld", c);//%d 改为 %lld
return 0;
}
缺陷:该方法逐一试验,有些耗时。
方法二:试乘法
假设现在两个数字是5、7
最小公倍数是35
35 / 5 = i 35 / 7 = j
即35既可以整除5也可以整除7
5 * i / 7 → j
即5 * i / 7 是整除,没有余数的时候,5 * i即为最小公倍数
代码实现如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
long long a, b;
scanf("%lld %lld", &a, &b);
int i = 1;
while (i * a % b)
{
i++;
}
printf("%lld", i * a);
return 0;
}