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

你會(huì)求兩個(gè)數(shù)的最大公約數(shù)嗎(三種方法)?

這篇具有很好參考價(jià)值的文章主要介紹了你會(huì)求兩個(gè)數(shù)的最大公約數(shù)嗎(三種方法)?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

前言

一、枚舉法

二、輾轉(zhuǎn)相除法

三、更相減損法



前言

如何求兩個(gè)數(shù)的最大公約數(shù)是非常經(jīng)典的問(wèn)題,求解的方法也有很多,本文主要介紹其中的三種方法,分別是:枚舉法、輾轉(zhuǎn)相除法和更相減損法

?

一、枚舉法

兩個(gè)數(shù)的最大公約數(shù)一定小于或等于兩數(shù)中較小的數(shù),并且這兩個(gè)數(shù)必定至少存在一個(gè)公因數(shù) 1,利用這兩個(gè)條件,可以將兩個(gè)數(shù)的最大公約數(shù)的所有可能都列舉出來(lái)。

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 0;
	int min = 0;
	scanf("%d%d", &a, &b);
	if (a > b)
		min = b;
	else
		min = a;
	for (int i = min; i > 0; i--)  // i:min -> 1
	{
		if (a % i == 0 && b % i == 0)
		{
			printf("的最大公約數(shù)為 %d", i);
			break;
		}
	}
	return 0;
}

二、輾轉(zhuǎn)相除法

輾轉(zhuǎn)相除法,又名歐幾里得算法,是求最大公約數(shù)的一種算法。輾轉(zhuǎn)相除法首次出現(xiàn)于歐幾里得的《幾何原本》中的第 Ⅶ 卷,書(shū)中的命題 i 和命題 ii 所描述的就是輾轉(zhuǎn)相除法。

輾轉(zhuǎn)相除法的本質(zhì)就是:用一個(gè)數(shù)除以另一個(gè)數(shù),如果余數(shù)不為 0,則用除數(shù)除以余數(shù),一直反復(fù),直到余數(shù)為 0 為止,即 a % b = r1,若 r1 ≠ 0,則用 b % r1 = r2,若 r2 ≠ 0,那么一直反復(fù),直到某個(gè)余數(shù) rn 為0 為止,最后一條式子的除數(shù)就是兩個(gè)數(shù)的最大公約數(shù)。

把兩個(gè)數(shù)看作被除數(shù)與除數(shù)的關(guān)系,則兩個(gè)數(shù)的最大公約數(shù)就等于除數(shù)與余數(shù)的最大公約數(shù),即 gcd(a, b) = gcd(b, r)。

輾轉(zhuǎn)相除法源于希臘,希臘人非常喜歡從圖形或者是用幾何的角度去看待問(wèn)題,很多希臘數(shù)學(xué)家都習(xí)慣先去思考能否將其轉(zhuǎn)換為直觀的幾何圖形再進(jìn)行求解。所以很自然地,希臘數(shù)學(xué)家在面對(duì)求兩個(gè)數(shù)的最大公約數(shù)這個(gè)問(wèn)題時(shí),也首先去思考這個(gè)問(wèn)題是否能通過(guò)將其轉(zhuǎn)換成一個(gè)幾何問(wèn)題來(lái)處理。在經(jīng)過(guò)一些嘗試之后,這一設(shè)想最終實(shí)現(xiàn)了,希臘數(shù)學(xué)家將所要求最大公約數(shù)的兩個(gè)數(shù)字 a 和 b 分別作為矩形的兩條邊,那么這個(gè)問(wèn)題就被轉(zhuǎn)換成在這個(gè)矩形中找到這樣一個(gè)正方形,這個(gè)正方形能夠沒(méi)有縫隙地鋪滿(mǎn)上述矩形,顯然這類(lèi)正方形可能有多個(gè)(當(dāng)然,也只考慮正整數(shù)邊長(zhǎng)的正方形),而我們的目標(biāo)就是找出這類(lèi)正方形中最大的那一個(gè)。

那么我們?nèi)绾握业竭@樣一個(gè)正方形呢?具體操作如下

你會(huì)求兩個(gè)數(shù)的最大公約數(shù)嗎(三種方法)?

證明:我們假設(shè) a = 16,b = 6,兩個(gè)數(shù)的最大公約數(shù)為 c。

顯然 c <= b,因此我們先用矩形的短邊 b 構(gòu)造正方形,然后判斷這樣的正方形能否鋪滿(mǎn)整個(gè)矩形,判斷方式可以是計(jì)算兩個(gè)數(shù)的余數(shù)。因?yàn)?a ÷ b = n ... r,余數(shù) r 不為零,所以 c ≠ b。又因?yàn)?a = k1c,b = k2c,r = a - n·b = k1c - nk2c = (k1 - nk2)c,所以 c 也是余數(shù) r 的約數(shù),那么 c <= r,因此再用余數(shù) r 構(gòu)造正方形,判斷這樣的正方形能否鋪滿(mǎn)以 b 和 r 為邊的小矩形,即計(jì)算 b % r 的結(jié)果。

用余數(shù) r 構(gòu)造的正方形如果能鋪滿(mǎn)以 b 和 r 邊的小矩形,則一定能鋪滿(mǎn)整個(gè)大矩形。

一直反復(fù),直到余數(shù)為 0 為止,最后能鋪滿(mǎn)矩形的正方形的邊長(zhǎng)就是 a 和 b 的最大公約數(shù)。

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 0;
	int r = 0;
	scanf("%d%d", &a, &b);
	while ((r = a % b) != 0)  
	{
		// 若余數(shù)不為 0
		a = b;
		b = r;
	}
	// 當(dāng)余數(shù)為 0 時(shí),除數(shù)就是兩數(shù)的最大公約數(shù)
	printf("最大公約數(shù)是 %d\n", b);
	return 0;
}

三、更相減損法

更相減損術(shù)是出自《九章算術(shù)》的一種求最大公約數(shù)的算法,其本質(zhì)是:以較大的數(shù)減去較小的數(shù),接著把所得的差與較小數(shù)相比較,并以較大數(shù)減較小數(shù),繼續(xù)這樣的操作,直到所得的減數(shù)和差相等為止,即若 a > b,a - b = s1(s1 ≠ 0),若 b > s1,b - s1 = s2(s2 ≠ 0),若 s1 = s2,s1 - s2 = 0,那么 s1、s2 就是 a 、b 的最大公約數(shù)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-404441.html

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d%d", &a, &b);
	while (a != b)
	{
		if (a > b)
			a -= b;  // 當(dāng) a > b 時(shí),a 來(lái)保存兩數(shù)的差
		else
			b -= a;  // 當(dāng) a < b 時(shí),b 來(lái)保存兩數(shù)的差
	}
	printf("最大公約數(shù)是 %d", a);
	return 0;
}

到了這里,關(guān)于你會(huì)求兩個(gè)數(shù)的最大公約數(shù)嗎(三種方法)?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

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

    C語(yǔ)言——輸入兩個(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ù)過(guò)程為: 27÷15 余12 15÷12 余3 12÷3 余0 因

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

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

    2024年02月03日
    瀏覽(21)
  • C語(yǔ)言--編寫(xiě)兩個(gè)函數(shù),分別求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù),再主函數(shù)中輸入兩個(gè)整數(shù),調(diào)用它們后輸出結(jié)果。
  • 【Python 基礎(chǔ)】輸入兩個(gè)數(shù),求它們的求最大公約數(shù)(偽碼描述 + Python實(shí)現(xiàn))| 區(qū)塊鏈 面試題:區(qū)塊鏈技術(shù)中的“閃電網(wǎng)絡(luò)”是什么?有什么作用?

    【Python 基礎(chǔ)】輸入兩個(gè)數(shù),求它們的求最大公約數(shù)(偽碼描述 + Python實(shí)現(xiàn))| 區(qū)塊鏈 面試題:區(qū)塊鏈技術(shù)中的“閃電網(wǎng)絡(luò)”是什么?有什么作用?

    ? “這樣的年代沒(méi)有誰(shuí)是值得信任的,你只能靠自己。” ? ? ??作者主頁(yè): 追光者♂?? ???????? ??個(gè)人簡(jiǎn)介: ? ??[1] 計(jì)算機(jī)專(zhuān)業(yè)碩士研究生?? ? ??[2] 2023年城市之星領(lǐng)跑者TOP1(哈爾濱)?? ? ??[3] 2022年度博客之星人工智能領(lǐng)域TOP4?? ? ??[4] 阿里云社區(qū)特邀專(zhuān)家博

    2024年02月01日
    瀏覽(26)
  • 【約數(shù)】求最大公約數(shù)——遞歸

    請(qǐng)使用遞歸算法計(jì)算正整數(shù)n和m的最大公約數(shù)GCD(n,m)。 G C D ( n , m ) = { = m , 當(dāng) m = n 且 n m o d m = 0 = G C D ( m , n ) , 當(dāng) n m 時(shí) = G C D ( m , n m o d ?? m ) , 其他 GCD(n,m)=left{begin{matrix} =m,當(dāng) m=n 且 n mod m =0\\\\ =GCD(m,n),當(dāng)nm時(shí)\\\\ =GCD(m,n mod m),其他 end{matrix}right. GC D ( n , m ) = ? ? ? ? = m

    2024年02月03日
    瀏覽(18)
  • 輾轉(zhuǎn)相除法求最大公約數(shù)

    輾轉(zhuǎn)相除法求最大公約數(shù)

    輾轉(zhuǎn)相除法也被稱(chēng)為歐幾里得算法,是求兩個(gè)整數(shù)的最大公約數(shù)(GCD)的一種常用方法。 輾轉(zhuǎn)相除法的原理是基于兩個(gè)整數(shù)的最大公約數(shù)與它們的余數(shù)的最大公約數(shù)相等的性質(zhì)。具體步驟如下: 用較大的數(shù)除以較小的數(shù),得到一個(gè)商和余數(shù)。 如果余數(shù)為0,則較小的數(shù)即為最

    2024年02月05日
    瀏覽(25)
  • 最大公約數(shù)和最小公倍數(shù)問(wèn)題

    等差數(shù)列 藍(lán)橋杯192 gcd問(wèn)題 題目描述 數(shù)學(xué)老師給小明出了一道等差數(shù)列求和的題目。但是粗心的小明忘記了一 部分的數(shù)列,只記得其中?N?個(gè)整數(shù)。 現(xiàn)在給出這?N?個(gè)整數(shù),小明想知道包含這?N?個(gè)整數(shù)的最短的等差數(shù)列有幾項(xiàng)? 思路:求出每一項(xiàng)之差的最大公約數(shù),以這個(gè)

    2023年04月09日
    瀏覽(26)
  • 最大公約數(shù)的四種方法

    最大公約數(shù)的四種方法

    求兩數(shù)的最大公約數(shù),一共有四種方法:暴力窮舉法、更相減損法、輾轉(zhuǎn)相除法、stein 算法,小女不才,花了幾天的時(shí)間終于把這幾種方法全部弄明白,現(xiàn)在就把它們?nèi)糠窒沓鰜?lái)。 首先,假設(shè)被求的兩個(gè)數(shù)為 x、y,且 x y。最大公約數(shù) d = gcd (x , y) 正如名字所說(shuō),暴擊窮舉法

    2024年02月05日
    瀏覽(33)
  • C++ 最大公約數(shù)與最小公倍數(shù)

    C++ 最大公約數(shù)與最小公倍數(shù)

    (一)簡(jiǎn)單的兩個(gè)正整數(shù)? 求 最大公約數(shù) (引入專(zhuān)題) 思路: 根據(jù) “歐幾里得算法”? ,即 “輾轉(zhuǎn)相除法” 原理如下: 題意: 求出? ?a? , b? 兩個(gè)正整數(shù)的最大公約數(shù) 設(shè)? k = a / b,? ?r = a % b 即? ? a = k * b + r 又設(shè)? d? 為 a 和 b 的一個(gè)公約數(shù) 那么由? r = a - k * b,? 可

    2024年02月06日
    瀏覽(21)
  • 【算法】輾轉(zhuǎn)相除法求最大公約數(shù)

    輾轉(zhuǎn)相除法 ,又稱(chēng) 歐幾里德算法(Euclidean Algorithm) ,是求兩個(gè)數(shù)的 最大公約數(shù)(greatest?common?divisor) 的一種方法。用較大的數(shù)除以較小的數(shù),再以除數(shù)和余數(shù)反復(fù)做除法運(yùn)算,當(dāng)余數(shù)為0時(shí),取當(dāng)前算式除數(shù)為最大公約數(shù)。 求30和18的最大公約數(shù): 30 /? 18? = 1 余? 12 18?

    2024年02月14日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包