題目描述
給定兩個(gè)數(shù),求這兩個(gè)數(shù)的最小公倍數(shù)
例如:
輸入:10 20
輸出:20
算法思路
最小公倍數(shù)是指兩個(gè)或多個(gè)整數(shù)公有的倍數(shù)中,除0以外最小的一個(gè)公倍數(shù)。
代碼示例
方法一
兩數(shù)乘積=最小公倍數(shù)*最大公約數(shù)
在上篇求最大公約數(shù)的四種方法中,我們已經(jīng)能夠求得最大公約數(shù),借此便能求得最小公倍數(shù)
#include<stdio.h>
int main() {
int a, b;
scanf("%d %d", &a, &b);
int m = a * b;
int r = 0;
while (r = a % b) {//r為0時(shí),跳出循環(huán),此時(shí)b為最大公因數(shù)
a = b;
b = r;
}
printf("%d\n", m/b);//乘積除以最大公因數(shù)等于最小公倍數(shù)
return 0;
}
方法二
自增:循環(huán)求解文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-621378.html
- 首先兩個(gè)數(shù)的最小公倍數(shù)一定大于兩個(gè)數(shù)中較大的那個(gè),且小于兩數(shù)之積
- 找出a與b之間的較大值max
- 利用循環(huán),令i=max,不斷++,當(dāng)i能同時(shí)整除a與b時(shí),輸出i,跳出循環(huán)
- 即i為最小公倍數(shù)
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int min = a > b ? a : b;//min為公倍數(shù)的可能最小取值
while (1)
{
if (min % a == 0 && min % b == 0)
{
printf("%d", min);
break;
}
}
return 0;
方法三
兩個(gè)數(shù)的最小公倍數(shù)一定是這兩個(gè)數(shù)每一個(gè)的倍數(shù),那么我們結(jié)合方法二,只需要拿出二者之一,讓它成倍的增長(zhǎng),然后判斷每增長(zhǎng)一倍后是否整除另一個(gè)數(shù),這樣既可以減少循環(huán)的次數(shù),還不用判斷兩個(gè)數(shù)的大小,是不是比方法二簡(jiǎn)單很多。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-621378.html
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int i = 0;
for (i = 1;; i++)
{
if (a * i % b == 0)
{
printf("%d\n", a * i);
break;
}
}
return 0;
}
到了這里,關(guān)于拿捏--->最小公倍數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!