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

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

這篇具有很好參考價(jià)值的文章主要介紹了【算法】輾轉(zhuǎn)相除法求最大公約數(shù)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

輾轉(zhuǎn)相除法,又稱歐幾里德算法(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?/?12?= 1 余?6

12?/? ?6?= 2 余?0

所以,30和18的最大公約數(shù)為6。

如果用小數(shù)除以大數(shù),只是過程多了一步,結(jié)果沒有差別,所以寫代碼時(shí)不用考慮兩個(gè)數(shù)的大小。

18 /?30?= 0 余?18

30 /?18?= 1 余?12

18?/?12?= 1 余?6

12?/? ?6?= 2 余?0

輾轉(zhuǎn)相除法的原理:

a / b = q 余 r,除數(shù)b和余數(shù)r能被同一個(gè)數(shù)整除,那么被除數(shù)a也能被這個(gè)數(shù)整除?;蛘哒f,除數(shù)與余數(shù)的最大公約數(shù),就是被除數(shù)與除數(shù)的最大公約數(shù)。即被除數(shù)與除數(shù)的最大公約數(shù),就是除數(shù)與余數(shù)的最大公約數(shù)。

#include <stdio.h>

int main()
{
	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);	
	int r = 0;
	while (r = m % n)
	{
		m = n; // 以除數(shù)作為被除數(shù)
		n = r; // 以余數(shù)作為除數(shù)
	}
	printf("%d\n", n); // 最后的除數(shù)為最大公約數(shù)
	return 0;
}

由于被除數(shù)與除數(shù)的最大公約數(shù),就是除數(shù)與余數(shù)的最大公約數(shù),即gcd(a, b) = gcd(b, a%b),所以也可以設(shè)計(jì)一個(gè)遞歸算法計(jì)算最大公約數(shù)。

#include <stdio.h>

int gcd(int a, int b)
{
	if (b == 0)
		return a;
	else
		return gcd(b, a % b);
}

int main()
{
	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);
	printf("%d\n", gcd(m, n));
	return 0;
}

最小公倍數(shù)是根據(jù)最大公約數(shù)求得的,最小公倍數(shù) = 兩數(shù)乘積 / 最大公約數(shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-621306.html

到了這里,關(guān)于【算法】輾轉(zhuǎn)相除法求最大公約數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(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)文章

  • 算法--輾轉(zhuǎn)相除法

    算法--輾轉(zhuǎn)相除法

    遇到一題算法題,如下: 求字符串的最大公因子? 對于字符串 s 和 t,只有在 s = t + … + t(t 自身連接 1 次或多次)時(shí),我們才認(rèn)定 “t 能除盡 s”。 給定兩個(gè)字符串 str1 和 str2 。返回 最長字符串 x,要求滿足 x 能除盡 str1 且 x 能除盡 str2 。 約數(shù)。整數(shù)a除以整數(shù)b(b≠0)除得

    2024年02月13日
    瀏覽(24)
  • 算法通關(guān)村十三關(guān) | 輾轉(zhuǎn)相除法、素?cái)?shù)和丑數(shù)

    算法通關(guān)村十三關(guān) | 輾轉(zhuǎn)相除法、素?cái)?shù)和丑數(shù)

    ? ? ? ? 輾轉(zhuǎn)相除法又稱歐幾里得算法,求兩個(gè)數(shù)的最大公因數(shù),希臘數(shù)學(xué)家喜歡用圖形來處理問題,于是 將要求最大公約數(shù)問題轉(zhuǎn)化為,以兩個(gè)數(shù)字構(gòu)成矩形,尋找可以鋪滿整個(gè)矩形的最大正方形的邊長問題。 例如8和12的最大公因數(shù)是4,記作gcd(8,12)=4,輾轉(zhuǎn)相除法的規(guī)則

    2024年02月09日
    瀏覽(21)
  • 快樂地談?wù)劊宏P(guān)于RSA算法中求私鑰d的歐幾里得方法(輾轉(zhuǎn)相除法)考試向的欸

    快樂地談?wù)劊宏P(guān)于RSA算法中求私鑰d的歐幾里得方法(輾轉(zhuǎn)相除法)考試向的欸

    關(guān)于RSA算法本身,就提及一下,它是屬于非對稱密碼體制. 基本的加密方式就如下圖所示: c為加密后的密文,m為加密前的明文 其中一般會(huì)給出公開密鑰n、e的值,這樣根據(jù)規(guī)則,便可以實(shí)現(xiàn)加密過程。而題目往往需要進(jìn)行解密,那么就需要 先求解出p、q,隨后再求解出私鑰

    2024年02月04日
    瀏覽(23)
  • C語言輾轉(zhuǎn)相除法運(yùn)用 24/1/22筆記錯(cuò)題整理

    C語言輾轉(zhuǎn)相除法運(yùn)用 24/1/22筆記錯(cuò)題整理

    題目: 思路:一開始用最普通的方法去解題,計(jì)算量較大,但是 求最大公約數(shù)常用的有兩種簡單方法,一是九章算術(shù)中的 更相減損術(shù) :大數(shù)減小數(shù)直到相等,相等的數(shù)即最大公約數(shù),該算法 時(shí)間復(fù)雜度約為O(N) ;二是歐幾里得的 輾轉(zhuǎn)相除法 :大數(shù)除以小數(shù)取余數(shù)(相當(dāng)于模

    2024年01月23日
    瀏覽(20)
  • C語言的三個(gè)經(jīng)典題目:三步翻轉(zhuǎn)法、楊氏矩陣、輾轉(zhuǎn)相除法

    C語言的三個(gè)經(jīng)典題目:三步翻轉(zhuǎn)法、楊氏矩陣、輾轉(zhuǎn)相除法

    三步翻轉(zhuǎn)法是C語言中用來求旋轉(zhuǎn)字符串的一種進(jìn)階方法,我們以具體例題對其進(jìn)行介紹。 例:求一個(gè)字符串左旋n個(gè)字符后得到的新字符串 普通方法實(shí)現(xiàn) 我們知道,左旋一個(gè)字符一共分為三步: 將字符串的第一個(gè)字符存放到臨時(shí)變量中; 將字符串中除’\\0’外的所有字符整

    2024年02月02日
    瀏覽(22)
  • 輾轉(zhuǎn)相除為什么能得到最大公因式?高等代數(shù)1.2

    輾轉(zhuǎn)相除為什么能得到最大公因式?高等代數(shù)1.2

    我們來繼續(xù)探索兩個(gè)多項(xiàng)式之間的關(guān)系,今天的研究對象是最大公因式。 一)最大公因式 因式 :g(x)|f(x),則f(x)=h(x)*g(x),g(x)是f(x)的 因式。 倍式:f(x)是g(x)的倍式。 最大公因式的定義如下圖。 最大公因式從字面上就可以理解了,一是公因式,二是要最大的那一些,至于為什么

    2024年02月06日
    瀏覽(23)
  • 一文看懂什么是歐幾里得算法!多圖演示輾轉(zhuǎn)相除算法究竟是什么!為什么要這樣開展!多圖預(yù)警!

    一文看懂什么是歐幾里得算法!多圖演示輾轉(zhuǎn)相除算法究竟是什么!為什么要這樣開展!多圖預(yù)警!

    ps:全文圖片均為手繪,如果有不標(biāo)準(zhǔn)的地方還望諒解,之后會(huì)慢慢熟悉畫圖工具的,感謝感謝?。?! 歐幾里得算法 又稱為 輾轉(zhuǎn)相除法 ,是指用于計(jì)算兩個(gè)非負(fù)整數(shù)a,b的最大 公約數(shù) 。 兩個(gè)整數(shù)的最大公約數(shù)是指能夠同時(shí)整除它們的最大的正整數(shù)。 輾轉(zhuǎn)相除法能夠?qū)崿F(xiàn)效

    2024年02月02日
    瀏覽(41)
  • C語言經(jīng)典算法之Euclidean算法求最大公約數(shù)

    目錄 前言 A.建議 B.簡介 一 代碼實(shí)現(xiàn) 二 時(shí)空復(fù)雜度 A.循環(huán)實(shí)現(xiàn) a.時(shí)間復(fù)雜度(Time Complexity): b.空間復(fù)雜度(Space Complexity): B.遞歸實(shí)現(xiàn) a.時(shí)間復(fù)雜度(Time Complexity): b.空間復(fù)雜度(Space Complexity): 三 優(yōu)缺點(diǎn) A.循環(huán)實(shí)現(xiàn) a.優(yōu)點(diǎn): b.缺點(diǎn): c.總結(jié): B.遞歸實(shí)現(xiàn) a.優(yōu)點(diǎn):

    2024年03月26日
    瀏覽(19)
  • C語言—求最大公約數(shù)(4種算法思路)

    如果大數(shù)可以整除小數(shù),那么最大公約數(shù)為小數(shù)。如果不能整除小數(shù),那么這兩個(gè)數(shù)就按大到小依次對比小數(shù)小的數(shù)求余,遇到都能夠整除的,就是最大公約數(shù)。 用a對b求余,若余數(shù)為0,則除數(shù)b為最大公約數(shù)。若余數(shù)不為0,將此余數(shù)r作為新的除數(shù),b作為新的被除數(shù),重新

    2024年04月13日
    瀏覽(25)
  • 每天一道算法練習(xí)題--Day22&& 第一章 --算法專題 --- ----------最大公約數(shù)

    每天一道算法練習(xí)題--Day22&& 第一章 --算法專題 --- ----------最大公約數(shù)

    關(guān)于最大公約數(shù)有專門的研究。 而在 LeetCode 中雖然沒有直接讓你求解最大公約數(shù)的題目。但是卻有一些間接需要你求解最大公約數(shù)的題目。 時(shí)間復(fù)雜度:最好的情況是執(zhí)行一次循環(huán)體,最壞的情況是循環(huán)到 smaller 為 1,因此總的時(shí)間復(fù)雜度為 O ( N ) O(N) O ( N ) ,其中 N 為 a 和

    2024年02月03日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包