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

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

這篇具有很好參考價值的文章主要介紹了一文看懂什么是歐幾里得算法!多圖演示輾轉(zhuǎn)相除算法究竟是什么!為什么要這樣開展!多圖預(yù)警!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

ps:全文圖片均為手繪,如果有不標(biāo)準(zhǔn)的地方還望諒解,之后會慢慢熟悉畫圖工具的,感謝感謝?。?!

1. 輾轉(zhuǎn)相除

歐幾里得算法又稱為輾轉(zhuǎn)相除法,是指用于計算兩個非負(fù)整數(shù)a,b的最大公約數(shù)。

兩個整數(shù)的最大公約數(shù)是指能夠同時整除它們的最大的正整數(shù)。

輾轉(zhuǎn)相除法能夠?qū)崿F(xiàn)效果主要基于以下原理:兩個整數(shù)的最大公約數(shù)等于其中較小的數(shù)和兩數(shù)相除余數(shù)的最大公約數(shù)。

原理用用公式表示為:gcd(a,b) = gcd(b,a mod b)。

其中g(shù)cd為最大公約數(shù)的英文greatest common divisor的縮寫

mod相當(dāng)于取模運算符%

最大公約數(shù):兩個或多個整數(shù)共有的最大公約數(shù),用于表示這些整數(shù)之間的最大公共因子。

2. 輾轉(zhuǎn)相除算法的幾何描述

2.1 起源

輾轉(zhuǎn)相除算法起源于希臘,希臘人非常喜歡從圖形或者用幾何的角度去看待問題。希臘數(shù)學(xué)家甚至認(rèn)為,所有的數(shù)字都與一個幾何概念有關(guān)系。所以很自然地,希臘數(shù)學(xué)家在面對求兩個數(shù)的最大公約數(shù)這個問題的時候,首先想到這個問題是否可以轉(zhuǎn)換為一個幾何問題來進(jìn)行處理。在經(jīng)過一些嘗試之后。這一攝像得到實現(xiàn):將所要求取最大公約數(shù)的兩個數(shù)字a,b分別作為一個矩形的兩條邊,形成一個矩形。

歐幾里得算法是啥,C歷程,算法,c語言

前文提到,兩個整數(shù)共有的最大公約數(shù),就是用于表示這些整數(shù)之間公共因子中的最大的一個。這是一種偏于數(shù)學(xué)抽象化的描述。那么如何將其進(jìn)行直觀的表示出來呢?也就是如何將最大公約數(shù)問題從用數(shù)字表示,轉(zhuǎn)化為幾何圖形的形式。

歐幾里得算法是啥,C歷程,算法,c語言

即:以需要求取最大公約數(shù)的兩個數(shù)字為邊長,構(gòu)造出一個矩形。然后從這個矩形中尋找出一個小的矩形,或者說一個小的正方形,這個正方形可以沒有縫隙的鋪滿上述構(gòu)造出的矩形。明顯的是這種正方形有很多個,這就像兩個數(shù)字的公因子,可能存在很多個,而我們的任務(wù)就是找出其中最大的那個。

所以我們應(yīng)該怎么找出這個最大的正方形呢?

2.2 鋪瓷磚

不知道大家有沒有看過裝修的時候,工人師傅們鋪瓷磚的場面。

歐幾里得算法是啥,C歷程,算法,c語言

我們是否可以把上述問題想象稱為鋪瓷磚,有一個長為a,寬為b的地面,需要鋪滿瓷磚,需要用多大的正方形瓷磚才能正好將其鋪滿。

如果都用一樣大小的正方形瓷磚,并且這個正方形為其可以選擇的面積最大的正方形,那么鋪瓷磚師傅的工作量將會大大減小吧。

歐幾里得算法是啥,C歷程,算法,c語言

如上圖,所需正方形的變長c便是a和b的約數(shù),即c為a和b的公約數(shù),當(dāng)c取到最大值時,即為a和b的最大公約數(shù)。

2.2.1 推導(dǎo)

為了解決上面的問題,我們可以先使用多種尺寸的正方形進(jìn)行填補嘗試,而我們的目的是找到允許存在的最大的正方形,那么我們先從最大面積開始嘗試。

設(shè)寬為a,長為b,其中0<a<b

  1. c取a,即正方形面積為a*a

    歐幾里得算法是啥,C歷程,算法,c語言

    從左往右依次鋪設(shè)變長為a的正方形,發(fā)現(xiàn)地面只能容納兩個,并且剩余一個矩形空間,顯然不符合要求

  2. c取a/2,即正方形面積為a/2 * a/2

    歐幾里得算法是啥,C歷程,算法,c語言

    從左往右依次鋪設(shè)變長為a/2的正方形,發(fā)現(xiàn)地面只能容納8個,并且剩余一個矩形空間,顯然也不符合要求

  3. c取a/3,即正方形面積為a/3 * a/3

    歐幾里得算法是啥,C歷程,算法,c語言

    從左往右依次鋪設(shè)變長為a/3的正方形,發(fā)現(xiàn)地面只能容納18個,并且剩余一個矩形空間,顯然也不符合要求

經(jīng)過三次嘗試,我們發(fā)現(xiàn)總是不能滿足我們的要求,并且每一次右邊都會剩余一部分矩形,對比三張圖片發(fā)現(xiàn),它們剩余的矩形區(qū)域似乎差不多大小,這是一個新奇的發(fā)現(xiàn),是否真的如同我們所想,剩余區(qū)域其實是相同大小的矩形呢?我們嘗試著把三個圖形進(jìn)行重疊

歐幾里得算法是啥,C歷程,算法,c語言

上圖為將前三圖重合之后得到,此時我們發(fā)現(xiàn)三個圖不同大小的正方形進(jìn)行填充會存在邊重合的現(xiàn)象,并且每次填充剩余矩形的大小的確為相同的面積。虛線重合地方為綠色加粗線條。

也就是說,無論是使用哪一種大小的正方形進(jìn)行填充,我們都會先把前面綠線前面的以短邊a為面積構(gòu)成的正方形填充掉,剩余一個矩形,那么我們是否可以這樣想?

把以a為邊長的正方形填充的區(qū)域,直接當(dāng)做已經(jīng)填充的區(qū)域,從綠線之后的區(qū)域開始填充。那么此時這個問題就變成了:如何用面積相同的正方形填滿長為a,寬為b-a的長方形呢。此時我們相當(dāng)于簡化了原先的問題。

歐幾里得算法是啥,C歷程,算法,c語言

去除兩個灰色的面積為a*a的正方形,我們得到了一個細(xì)長豎直的長方形,此時短邊為(b-a),長邊為a

用長邊b / 短邊a 得到的余數(shù)即為c

此時我們設(shè):c = b%a,即:

歐幾里得算法是啥,C歷程,算法,c語言

此時短邊為c,長邊為a,我們重復(fù)上面的流程,用c為邊長的正方形填充灰色區(qū)域,然后在去掉填充區(qū)域,得到短邊為d,長邊為c的長方形區(qū)域。

用長邊a / 短邊c 得到的余數(shù)即為d

此時設(shè):d = a%c

歐幾里得算法是啥,C歷程,算法,c語言

此時短邊為d,長邊為c。再次重復(fù)上述流程,用d為邊長的正方形填充灰色區(qū)域。

用長邊c / 短邊d 得到的余數(shù)為0

此時 c%d ==0 即代表不在存在未填充區(qū)域

歐幾里得算法是啥,C歷程,算法,c語言

我們發(fā)現(xiàn),面積為d*d的正方形正好填充滿這個長方形。

綜上所述,用面積為 d*d 的正方形恰好可以填滿最初面積為 a*b的長方形,這種方式就是輾轉(zhuǎn)相除法

3. 最大公約數(shù)

現(xiàn)在,我們可以嘗試使用輾轉(zhuǎn)相除法,也就是上面貼瓷磚的邏輯,來試求最大公因數(shù)。

例如:我們設(shè)兩個數(shù),a=6,b=16,求兩個數(shù)的最大公約數(shù)

其中較小者為a,我們用b%a(16%6),得到c=4

此時長邊為6,短邊為4,再用a%c(6%4),得到d=2

此時長邊為4,短邊為2,再用c%2(4%2),得到 0

如此:在最后一步實現(xiàn)了整除,此時除數(shù)也就是短邊為 2 ,這就是6和16的最大公約數(shù)

回顧上述過程,我們發(fā)現(xiàn)其流程與C語言中的函數(shù),遞歸非常相似,那么我們是否可將其抽象為一個函數(shù)呢?

最大公約數(shù)的英文為:greatest common divisor 取簡稱為gcd

設(shè)函數(shù)名為 gcd,函數(shù)參數(shù)為需要求最大公約數(shù)的兩個整數(shù),得出 gcd(a,b);

再次回顧流程,發(fā)現(xiàn)每一次不是用長邊去除短邊,我們可以將每次得到的長邊再次賦值給a,短邊賦值給b,雖然這與前文不同,但是更符合我們的習(xí)慣。長在前,短在后

3.1 算法實現(xiàn)

#include<stdio.h>

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

int main()
{
	int a = 0;
	int b = 0;
	int ret = 0;
	scanf("%d %d", &a, &b);

	ret = Gcd(a, b);

	printf("%d和%d的最大公約數(shù)是:%d\n", a, b, ret);
	return 0;
}

ps:很久都沒有寫過博客了,有些地方講述可能會有些問題,或者模糊。如果有問題,麻煩各位提出,非常感謝。

引用:
輾轉(zhuǎn)相除法介紹
歐幾里得算法文章來源地址http://www.zghlxwxcb.cn/news/detail-788036.html

到了這里,關(guān)于一文看懂什么是歐幾里得算法!多圖演示輾轉(zhuǎn)相除算法究竟是什么!為什么要這樣開展!多圖預(yù)警!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • [數(shù)論第二節(jié)]歐拉函數(shù)/快速冪/擴展歐幾里得算法

    歐拉函數(shù) (varphi(N)) : 1-N中與N互質(zhì)的數(shù)的個數(shù) 若 (N = p_1^{a_1} · p_2^{a_2} · p_3^{a_3} ··· ·p_n^{a_n}) 其中p為N的所有質(zhì)因子 則 (varphi(N) = N(1-frac{1}{p_1})(1-frac{1}{p_2})···(1-frac{1}{p_n})) 證明: 互質(zhì):兩數(shù)的公共因子只有1 去掉所有與N有(大于1的)公共因子的數(shù),剩下的數(shù)就是與

    2024年02月14日
    瀏覽(20)
  • 【算法基礎(chǔ) & 數(shù)學(xué)】快速冪求逆元(逆元、擴展歐幾里得定理、小費馬定理)

    原文鏈接 首先,在算法競賽中,很多情況下會遇到數(shù)值很大的數(shù)據(jù),這個時候,題目往往會讓我們對某個數(shù)去摸,來控制數(shù)據(jù)范圍。 在±*運算中,我們可以對每個數(shù)單獨取模,然后再對運算之后的數(shù)取模。 但是除法比較特殊,例如: ( 40 ÷ 5 ) m o d 10 ≠ ( ( 40 m o d 10 ) ÷ ( 5

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

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

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

    2024年02月04日
    瀏覽(24)
  • Python歐幾里得距離變換

    edt ,即 Euclidean distance transform. ,歐氏距離變換。對于一個二值矩陣 A A A ,元素 a ∈ A ain A a ∈ A ,則 edt ? ( a ) operatorname{edt}(a) edt ( a ) 為 a a a 到矩陣中0元素的最短距離。假設(shè)現(xiàn)有一矩陣 A = [ 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 1 1 0 0 ] A = begin{bmatrix} 01111\\\\ 00111\\\\ 01111\\\\ 01110\\\\

    2024年02月06日
    瀏覽(26)
  • 【非歐幾里得域信號的信號處理】使用經(jīng)典信號處理和圖信號處理在一維和二維歐幾里得域信號上應(yīng)用低通濾波器研究(Matlab代碼實現(xiàn))

    【非歐幾里得域信號的信號處理】使用經(jīng)典信號處理和圖信號處理在一維和二維歐幾里得域信號上應(yīng)用低通濾波器研究(Matlab代碼實現(xiàn))

    ????????? 歡迎來到本博客 ???????? ??博主優(yōu)勢: ?????? 博客內(nèi)容盡量做到思維縝密,邏輯清晰,為了方便讀者。 ?? 座右銘: 行百里者,半于九十。 ?????? 本文目錄如下: ?????? 目錄 ??1 概述 ??2 運行結(jié)果 2.1 算例1 2.2 算例2 2.3 算例3? 2.4 算例4?

    2024年02月13日
    瀏覽(34)
  • 機器學(xué)習(xí)中的數(shù)學(xué)——距離定義(一):歐幾里得距離(Euclidean Distance)

    分類目錄:《機器學(xué)習(xí)中的數(shù)學(xué)》總目錄 相關(guān)文章: · 距離定義:基礎(chǔ)知識 · 距離定義(一):歐幾里得距離(Euclidean Distance) · 距離定義(二):曼哈頓距離(Manhattan Distance) · 距離定義(三):閔可夫斯基距離(Minkowski Distance) · 距離定義(四):切比雪夫距離(

    2023年04月11日
    瀏覽(22)
  • 【抽象代數(shù)】素理想、極大理想、唯一析因環(huán)、主理想整環(huán)、歐幾里得環(huán)

    設(shè) R R R 是一個環(huán), I I I 是 R R R 的理想,若 a b ∈ I ? a ∈ I abin I Rightarrow a in I a b ∈ I ? a ∈ I 或 b ∈ I b in I b ∈ I ,則稱 I I I 是素理想。 例: 整數(shù)環(huán) p p p (由元素p生成的主理想), 若p是素數(shù),且 a b ∈ ? p ab in p a b ∈ ? p ,則 p ∣ a b p | ab p ∣ a b , p ∣ a 或 p ∣

    2024年02月09日
    瀏覽(21)
  • 項目管理系統(tǒng)是什么?能干什么?有什么功能?一文看懂

    項目管理系統(tǒng)是什么?能干什么?有什么功能?一文看懂

    閱讀本文您可以了解:1、項目任務(wù)管理系統(tǒng)是什么;2、項目任務(wù)管理系統(tǒng)的作用;3、項目任務(wù)管理系統(tǒng)的功能 項目任務(wù)管理是指運用系統(tǒng)的理論方法,在有限的條件和資源下,對項目從開始到結(jié)束的全流程進(jìn)行計劃、組織、協(xié)調(diào)直至最終實現(xiàn)項目目標(biāo)的管理過程。傳統(tǒng)項目

    2024年02月12日
    瀏覽(30)
  • 一文看懂什么是AR、VR和MR

    一文看懂什么是AR、VR和MR

    增強現(xiàn)實(AR)、虛擬現(xiàn)實(VR)和混合現(xiàn)實(MR)是近年來備受關(guān)注的三大技術(shù)領(lǐng)域,它們在游戲、教育、醫(yī)療、軍事等領(lǐng)域有著廣泛的應(yīng)用前景。本文將詳細(xì)解釋這三種技術(shù)的概念、特點和區(qū)別,以幫助讀者更好地理解它們的含義。 一、增強現(xiàn)實(AR) 增強現(xiàn)實(AR)是一

    2024年02月01日
    瀏覽(28)
  • 【基礎(chǔ)知識】一文看懂深度優(yōu)先算法和廣度優(yōu)先算法

    【基礎(chǔ)知識】一文看懂深度優(yōu)先算法和廣度優(yōu)先算法

    先上個圖 現(xiàn)在我們要訪問圖中的每個節(jié)點,即圖的遍歷。 圖的遍歷是指,從給定圖中任意指定的頂點(稱為初始點)出發(fā),按照某種搜索方法沿著圖的邊訪問圖中的所有頂點,使每個頂點僅被訪問一次,這個過程稱為圖的遍歷。 我們根據(jù)訪問節(jié)點的順序與方式(根據(jù)搜索方

    2024年02月09日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包