国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

最小公倍數(shù)求法 (3種代碼思路供參考 ) --(C語言實(shí)現(xiàn))-- 詳解

這篇具有很好參考價(jià)值的文章主要介紹了最小公倍數(shù)求法 (3種代碼思路供參考 ) --(C語言實(shí)現(xiàn))-- 詳解。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔


題目內(nèi)容

正整數(shù)A和正整數(shù)B的最小公倍數(shù)是指 能被A和B整除的最小的正整數(shù)值,設(shè)計(jì)一個(gè)算法,求A,B的最小公倍數(shù)

輸入:

輸入兩個(gè)正整數(shù)A,B

輸出:

輸出:A,B的最小公倍數(shù)


一、題目解讀

1、最小公倍數(shù)(LCM)是:能被A和B整除的最小的正整數(shù)
2、如何求最小公倍數(shù):
思路一
最小公倍數(shù)一定是兩個(gè)數(shù)中較大的值。
加法尋找:讓較大的值賦值給m,利用m可以整除A和B來判斷。如果m一次可以整除A和B就找到了最小公倍數(shù),否則就m+1看下一位數(shù)是否可以整除A和B(需要循環(huán));
乘法尋找:不用判斷a,b誰為較大值,利用循環(huán)變量i(1-無窮),如果 a * i % b == 0或者 b * i % a== 0,就找到了最小公倍數(shù)a * i或b * i

思路二
利用輾轉(zhuǎn)相除法求出最大公約數(shù),再(a*b)/ 最大公約數(shù)=最小公倍數(shù)

思路三:假設(shè)a,b最小公倍數(shù)為k,k/a=i,k/b=j.就有(a*i)%b==0,
利用此條件為循環(huán)條件,求出最小公倍數(shù).

最大公約數(shù)博客

二、代碼實(shí)現(xiàn)

1.加法尋找最小公倍數(shù)

如果找到最小公倍數(shù)就返回t,沒找到就t++找下一個(gè)數(shù)是否成立。
代碼如下(示例):

//加法
int LCM(int a, int b)
{
	int t = 0;
	//將兩個(gè)數(shù)中較大的給t
    //int t=a>b?a:b;三目操作符運(yùn)算求兩個(gè)中較大值
	if (a > b)
	{
		t = a;
	}
	else
	{
		t = b;
	}
	while (1)
	{
		if (t % a == 0 && t % b == 0)
		{
			return t;
		}
		t++;
	}
}

加法總代碼

#include<stdio.h>
int LCM(int a, int b)
{
	int t = 0;
	//將兩個(gè)數(shù)中較大的給t
	if (a > b)
	{
		t = a;
	}
	else
	{
		t = b;
	}
	while (1)
	{
		if (t % a == 0 && t % b == 0)
		{
			return t;
		}
		t++;
	}
}
int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	int ret=LCM(a, b);
	printf("最小公倍數(shù)=%d\n", ret);
	return 0;
}

2.乘法尋找最小公倍數(shù)

發(fā)現(xiàn)最小公倍數(shù)只能是兩數(shù)中其中一個(gè)的整倍數(shù),所以t是a,b中一個(gè),t=t*i -> 如果得到的數(shù)可以整除a和b,則為最小公倍數(shù);
代碼如下(示例):

//最小公倍數(shù)最大可能就是兩數(shù)相乘
	/*for (i = 1;t<=a*b;i++)
	{
		t *= i;
		if (t % a == 0 && t % b == 0)
		{
			return t;
		}
	}*/

上述代碼重復(fù)太多,很多可以省去,代碼改進(jìn)如下

int LCM(int a, int b)
{
	int t = 0;
	int i = 0;
	for (i = 0;; i++)
	{
		if (a * i % b == 0)
		{
			return a * i;
		}
	}
}

乘法總代碼

#include<stdio.h>
int LCM(int a, int b)
{
	int t = 0;
	int i = 0;
	//最小公倍數(shù)最大可能就是兩數(shù)相乘
	/*for (i = 1;t<=a*b;i++)
	{
		t *= i;
		if (t % a == 0 && t % b == 0)
		{
			return t;
		}
	}*/
	for (i = 1;; i++)
	{
		if (a * i % b == 0)
		{
			return a * i;
		}
	}
}
int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	int ret=LCM(a, b);
	printf("最小公倍數(shù)=%d\n", ret);
	return 0;
}

3、輾轉(zhuǎn)相除法求解最小公倍數(shù)

輾轉(zhuǎn)相除法求出最大公約數(shù),(a*b)/最大公約數(shù)==最小公倍數(shù)

#include<stdio.h>
int GCD(int a, int b)
{
	//a%b=t
	int t = 1;
	while (t)
	{
		t = a % b;
		a = b;
		b = t;
	}
	return a;
}
int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	int ret=GCD(a, b);
	int m = (a * b) / ret;
	printf("最小公倍數(shù)=%d\n", m);
	return 0;
}

4.利用乘法思路

利用k/a=i, k/b=j,可以得到(a*i)% b==0,以此為循環(huán)條件

代碼如下:

int main()
{
	long long a = 0;
	long long b = 0;
	while (scanf("%lld %lld", &a, &b) == 2)
	{
		//假設(shè)ab最小公倍數(shù)k
		//k/a=i
		// k/b=j
		//就有(a*i)%b==0
		int i = 1;
		while ((a * i) % b != 0)
		{
			i++;
		}
		//跳出循環(huán)的就是最小公倍數(shù)
		printf("%lld\n", a * i);
	}
	
	return 0;
}

總結(jié)

利用代碼解決問題,通過上述練習(xí),希望能增強(qiáng)自己的邏輯思維,考慮的全面性,加強(qiáng)C語言的練習(xí),讓代碼更優(yōu)化。文章來源地址http://www.zghlxwxcb.cn/news/detail-462023.html

到了這里,關(guān)于最小公倍數(shù)求法 (3種代碼思路供參考 ) --(C語言實(shí)現(xiàn))-- 詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【C語言】兩個(gè)整數(shù)最大公約數(shù)和最小公倍數(shù)

    輸入兩個(gè)整數(shù),求這兩個(gè)數(shù)的最大公約數(shù)和最小公倍數(shù)。 第一種求法(輾轉(zhuǎn)相除法)這個(gè)方法代碼較潔簡,我也比較推薦就是剛開始有點(diǎn)比較難了解。 首先,來看看怎么求最大公約數(shù),求最大公約數(shù)需要用到 歐幾里得算法 ,也稱為輾轉(zhuǎn)相除法。算法就是用兩數(shù)中較大的數(shù)

    2024年02月04日
    瀏覽(26)
  • 【c語言】—求最大公約數(shù)和最小公倍數(shù)多種方法

    目錄 一.求最大公約數(shù) 1.枚舉法求最大公約數(shù) 2.輾轉(zhuǎn)相除法 二.求最小公倍數(shù) 1.枚舉法求最小公倍數(shù) 2.簡易法 3.公式法 思路:先求兩個(gè)數(shù)中的最小值,最大公約數(shù)不可能大于兩個(gè)數(shù)的最小數(shù) 比如6和18,最大公約數(shù)就是6 再如3和9,最大公約數(shù)就是3 然后再從1開始循環(huán)遍歷到最小

    2024年02月08日
    瀏覽(22)
  • 求其最大公約數(shù)和最小公倍數(shù),一行代碼完成

    題目:輸入兩個(gè)正整數(shù) m 和 n,求其最大公約數(shù)和最小公倍數(shù)。 求出最大公約數(shù)就行,最小公倍數(shù)用m*n除以最大公約數(shù)就行

    2024年02月05日
    瀏覽(26)
  • C語言 多種方法求最大公因數(shù)和最小公倍數(shù)

    最大公約數(shù): 指能夠整除多個(gè)整數(shù)的最大正整數(shù),而多個(gè)整數(shù)不能都為零。 最小公倍數(shù): 兩個(gè)或多個(gè)整數(shù)公有的倍數(shù)叫做它們的公倍數(shù),其中除0以外最小的一個(gè)公倍數(shù)就叫做這幾個(gè)整數(shù)的最小公倍數(shù)。 求最小公倍數(shù)的算法: 最小公倍數(shù) = 兩個(gè)整數(shù)的乘積 / 最大公因數(shù) 求最

    2024年02月05日
    瀏覽(16)
  • 【C語言】一篇博客帶你弄懂最大公約數(shù)和最小公倍數(shù)

    【C語言】一篇博客帶你弄懂最大公約數(shù)和最小公倍數(shù)

    我們在C語言的學(xué)習(xí)中,經(jīng)常會遇到這樣一些數(shù)學(xué)題目,良好掌握這些題目有利于我們理解和學(xué)習(xí)C語言,話不多說,直接進(jìn)入主題 最大公約數(shù): 首先我們舉個(gè)例子,比如12 和16,12的約數(shù)有(1,2 ,3,4,6,12),16的約數(shù)有(1,2,4,8,16)公約數(shù)就是兩個(gè)數(shù)共同的約數(shù),(1,2,4)而公約數(shù)

    2024年02月04日
    瀏覽(18)
  • C語言——輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)

    C語言——輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)

    目錄 1.最大公約數(shù)求法 1.1輾轉(zhuǎn)相除法 1.2相減法 2.最小公倍數(shù)求法 3.代碼實(shí)現(xiàn) 4.結(jié)果展示 1.1輾轉(zhuǎn)相除法 設(shè)有兩整數(shù)a和b: a%b得余數(shù)c 若c==0,則b即為兩數(shù)的最大公約數(shù) 若c!=0,則a=b,b=c,再回去執(zhí)行第一步。 例如:求27和15的最大公約數(shù)過程為: 27÷15 余12 15÷12 余3 12÷3 余0 因

    2024年02月01日
    瀏覽(14)
  • C語言——輸入兩個(gè)正整數(shù) m 和 n。求其最大公約數(shù)和最小公倍數(shù)。

    1、首先,程序通過printf函數(shù)提示用戶輸入兩個(gè)正整數(shù)m和n,然后使用scanf函數(shù)接收用戶的輸入并將值分別存儲到變量m和n中。 2、接下來,程序進(jìn)入一個(gè)for循環(huán),從1開始遍歷直至i等于較小的數(shù)(m或n),檢查當(dāng)前數(shù)值i是否能同時(shí)整除m和n。如果i既能被m整除又能被n整除(即滿足

    2024年02月03日
    瀏覽(21)
  • C語言--編寫兩個(gè)函數(shù),分別求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù),再主函數(shù)中輸入兩個(gè)整數(shù),調(diào)用它們后輸出結(jié)果。
  • 拿捏--->最小公倍數(shù)

    給定兩個(gè)數(shù),求這兩個(gè)數(shù)的最小公倍數(shù) 例如: 輸入:10 20 輸出:20 最小公倍數(shù)是指兩個(gè)或多個(gè)整數(shù)公有的倍數(shù)中,除0以外最小的一個(gè)公倍數(shù)。 兩數(shù)乘積=最小公倍數(shù)*最大公約數(shù) 在上篇求最大公約數(shù)的四種方法中,我們已經(jīng)能夠求得最大公約數(shù),借此便能求得最小公倍數(shù) 自

    2024年02月14日
    瀏覽(18)
  • 809. 最小公倍數(shù)

    809. 最小公倍數(shù)

    鏈接: 鏈接 題目: 輸入兩個(gè)整數(shù)?aa?和?bb,請你編寫一個(gè)函數(shù), int lcm(int a, int b) ,計(jì)算并輸出?aa?和?bb?的最小公倍數(shù)。 輸入格式 共一行,包含兩個(gè)整數(shù)?aa?和?bb。 輸出格式 共一行,包含一個(gè)整數(shù),表示?aa?和?bb?的最小公倍數(shù)。 數(shù)據(jù)范圍 1≤a,b≤10001≤a,b≤1000 輸入

    2024年02月13日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包