歐幾里得算法初體驗

離散課上第一次接觸歐幾里得算法,課上并無多講,知識了解一個大概,隨后幾天學(xué)習(xí)C語言過程中遇到,看一本算法入門雜志中有提到,突然有興趣,開始尋找關(guān)于歐幾里得算法的一些簡單知識,下文文章僅是初學(xué)的我關(guān)于歐幾里得算法的搜集和一些自己的看法

一:歐幾里得算法:

想到歐幾里得算法最本質(zhì)的想法就是算最大公因數(shù)gcd(a,b) = gcd(b,a mod b),之前大一初學(xué)python的時候老師給我們的最初求最大公因數(shù)的問題是我那個時候(初學(xué)編程)(使用python)

代碼1

現(xiàn)在使用歐幾里得算法進(jìn)行求最大公約數(shù)

def findemax(x,y):

? ? while y!= 0:

? ? ? ? t = x%y

? ? ? ? x = y

? ? ? ? y = t

? ? return x

print(findemax(24,36))

歐幾里得算法體現(xiàn)出高效,下面是分析兩個代碼的算法復(fù)雜度,從算法復(fù)雜度來直觀看其高效

代碼1:復(fù)雜度很簡單:O(n)

歐幾里得算法復(fù)雜度為O(lgn)

下面是歐幾里得算法復(fù)雜度的解析(非原創(chuàng),是根據(jù)一個博客得到的,加上一點自己的理解)算是比較能理解的一種解釋

算法復(fù)雜度

所以歐幾里算法比較高效


下面是歐幾里算法的數(shù)學(xué)證明(非原創(chuàng),比較好理解)

數(shù)學(xué)證明

歐幾里得算法的應(yīng)用

倒水問題解析

有兩個容器,容積分別為A升和B升,有無限多的水,現(xiàn)在需要C升水。 我們還有一個足夠大的水缸,足夠容納C升水。起初它是空的,我們只能往水缸里倒入水,而不能倒出。 可以進(jìn)行的操作是: 把一個容器灌滿; 把一個容器清空(容器里剩余的水全部倒掉,或者倒入水缸); 用一個容器的水倒入另外一個容器,直到倒出水的容器空或者倒入水的容器滿。 ? ? 問是否能夠通過有限次操作,使得水缸最后恰好有C升水。

#include <stdio.h>\\C語言進(jìn)行編寫(原創(chuàng))

int main()

{

? ? int a,b,c;

? ? int t;

? ? scanf("%d%d",&a,&b,&c);

? ? while (b!=0){

? ? ? ? t = a%b;

? ? ? ? a = b;

? ? ? ? b = t;

? ? }

? ? if (b%c == 0){

? ? ? ? printf("yes");

? ? }else

? ? {

? ? ? ? printf("no");

? ? }

? ? return 0;

}

歐幾里得是我第一學(xué)習(xí)的算法,算法真神奇,這個算法讓我知道了為什么要好好學(xué)算法了,繼續(xù)努力吧~每天學(xué)習(xí)一個算法

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 專業(yè)考題類型管理運行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項A選項B選項C選項D選項E選項F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 10,516評論 0 13
  • 選擇題部分 1.(),只有在發(fā)生短路事故時或者在負(fù)荷電流較大時,變流器中才會有足夠的二次電流作為繼電保護(hù)跳閘之用。...
    skystarwuwei閱讀 14,368評論 0 7
  • 首先重點講解中國剩余定理,舉例:一個數(shù)x除d1余r1,除d2余r2,除d3余r3,那么,求這個數(shù)的最小值 。解答:...
    碧影江白閱讀 2,390評論 0 2
  • 一、實驗?zāi)康?學(xué)習(xí)使用 weka 中的常用分類器,完成數(shù)據(jù)分類任務(wù)。 二、實驗內(nèi)容 了解 weka 中 explo...
    yigoh閱讀 8,844評論 5 4
  • The Euclidean Algorithm歐幾里德算法(又稱輾轉(zhuǎn)相除法)是一種用于快速尋找兩個整數(shù)的最大公約數(shù)...
    import_hello閱讀 1,002評論 0 2

友情鏈接更多精彩內(nèi)容