C語言求最小公倍數(shù)
問題描述
求任意兩個正整數(shù)的最小公倍數(shù)(LCM)。
問題分析
最小公倍數(shù)(Least Common Multiple,LCM),如果有一個自然數(shù)a能被自然數(shù)b整除,則稱a為b的倍數(shù),b為a的約數(shù),對于兩個整數(shù)來說,指該兩數(shù)共有倍數(shù)中最小的一個。計算最小公倍數(shù)時,通常會借助最大公約數(shù)來輔助計算。
最小公倍數(shù)=兩數(shù)的乘積/最大公約(因)數(shù),解題時要避免和最大公約(因)數(shù)問題混淆。
對于最小公倍數(shù)的求解,除了利用最大公約數(shù)外,還可根據(jù)定義進(jìn)行算法設(shè)計。要求任意兩個正整數(shù)的最小公倍數(shù)即,求出一個最小的能同時被兩整數(shù)整除的自然數(shù)。
算法設(shè)計
對于輸入的兩個正整數(shù)m和n每次輸入的大小順序可能不同,為了使程序具有一般性,首先對整數(shù)所m和n進(jìn)行大小排序,規(guī)定變量m中存儲大數(shù)、變量n中存儲小數(shù)。
輸入的兩個數(shù),大數(shù)m是小數(shù)n的倍數(shù),那么大數(shù)m即為所求的最小公倍數(shù);若大數(shù)m不能被小數(shù)n整除則需要尋找一個能同時被兩數(shù)整除的自然數(shù)。從大數(shù)m開始依次向后遞增直到找到第一個能同時被兩數(shù)整除的數(shù)為止,所以循環(huán)變量i的初值為尋找第一個能同時被兩整數(shù)整除的自然數(shù),并將其輸出。需要注意的是,在找到第一個滿足條件的i值后,循環(huán)沒必要繼續(xù)下去,所以用break來結(jié)束循環(huán)。
在上面的分析過程中沒有提到循環(huán)變量的終止條件,因i的最大值不能確定,像這種終止條件不確定的情況如何來表示?方法有兩種,第一,可以把判定條件表示成循環(huán)變量滿足的基本條件,如本例終止條件可表示成i>0;第二,終止條件省略不寫,利用循環(huán)體中的語句結(jié)束循環(huán),如在找到第一個滿足條件的自然數(shù)時利用break語句結(jié)束循環(huán)。
下面是完整的代碼:
#include<stdio.h>
int main()
{
int m, n, temp, i;
printf("Input m & n:");
scanf("%d%d", &m, &n);
if(m<n) *比較大小,使得m中存儲大數(shù),n中存儲小數(shù)*="" {="" temp="m;" m="n;" n="temp;" }="" for(i="m;" i="">0; i++) /*從大數(shù)開始尋找滿足條件的自然數(shù)*/
if(i%m==0 && i%n==0)
{/*輸出滿足條件的自然數(shù)并結(jié)束循環(huán)*/
printf("The LCW of %d and %d is: %d\n", m, n, i);
break;
}
return 0;
}</n)></stdio.h>
運行結(jié)果:
Input m & n:6 24
The LCW of 24 and 6 is: 24
作者:大學(xué)生新聞網(wǎng) 來源:大學(xué)生新聞網(wǎng)
- C語言求最大公約數(shù)
- 如果有一個自然數(shù)a能被自然數(shù)b整除,則稱a為b的倍數(shù),b為a的約數(shù)。幾個自然數(shù)公有的約數(shù),叫做這幾個自然數(shù)的公約數(shù)。
- 03-12 關(guān)注:0
- C語言求勾股數(shù)
- 所謂勾股數(shù),是指能夠構(gòu)成直角三角形三條邊的三個正整數(shù)(a,b,c)。
- 03-11 關(guān)注:3
- C語言求回文數(shù)
- 將數(shù)組中元素重新組合成一新數(shù)。拆分時變量a的最高位仍然存儲在數(shù)組中下標(biāo)最大的位置
- 03-11 關(guān)注:3
- C語言水仙花數(shù)
- 輸出所有的“水仙花數(shù)”,所謂的“水仙花數(shù)”是指一個三位數(shù)其各位數(shù)字的立方和等于該數(shù)本身,例如153是“水仙花數(shù)”,因為:153 = 13
- 03-11 關(guān)注:3
- C語言求自守數(shù)
- 自守數(shù)是指一個數(shù)的平方的尾數(shù)等于該數(shù)自身的自然數(shù)。
- 03-11 關(guān)注:2
- C語言求親密數(shù)
- 如果整數(shù)A的全部因子(包括1,不包括A本身)之和等于B;且整數(shù)B的全部因子(包括1,不包括B本身)之和等于A
- 03-11 關(guān)注:2