排卵期为什么会出血| 吃什么拉什么| sku是什么意思| 牙冠是什么| 祛湿吃什么药| 人为什么要有性生活| 湿疹要注意什么| 乳腺化疗期间吃什么| 后嗣是什么意思| 一个木一个舌读什么| 为什么一动就满头大汗| 去医院看舌头挂什么科| 曲苑杂坛为什么停播| 什么叫高危行为| 小孩出汗多是什么原因造成的| 自尊心是什么意思| 突然便秘是什么原因引起的| 乌贼是什么动物| 一日无书下一句是什么| 堃是什么意思| hmb是什么意思| 身上起红疙瘩是什么原因| 农历五月属什么生肖| 外痔长什么样| 六月十七是什么星座| 子宫内膜息肉样增生是什么意思| 手经常抖是什么原因| 卡拉胶是什么| Preparing什么意思| qjqj什么烟| 老年骨质疏松疼痛有什么好疗法| 减肥医院挂什么科| 马拉松起源与什么有关| 秦始皇的名字叫什么| 特诊科是什么意思| 头孢是治疗什么病的| 主动脉壁钙化是什么意思| 五行火生什么克什么| 南昌有什么好吃的| 尿白细胞加减什么意思| 犹太人为什么不受欢迎| 国药准字号是什么意思| 心率过快是什么原因| 脸很黄是什么原因| 520是什么节日| 射精太快吃什么好| 月经期吃什么水果| 吃什么能让肠道蠕动快| 确认是什么意思| 抗体是指什么| 吉利丁片是什么做的| 吃什么减脂肪| 店铺开业送什么礼物好| 卡介苗是什么| 阳历10月是什么星座| 1994年属狗的是什么命| 头发痒是什么原因| 尿道炎吃什么药| 牙龈出血缺什么维生素| 耐力是什么意思| 云南在古代叫什么| 三点水加一个心读什么| 黑色上衣配什么颜色的裤子| 万什么一心| 劲酒是什么酒| 痛风忌吃什么| 无产阶级是什么意思| coolmax是什么面料| 什么是粘胶纤维| 男人断眉有什么说法| 碧文圆顶是什么意思| 硬度不够吃什么药调理| 人定胜什么| 唠叨是什么意思| 肺气泡是什么病| 85年属什么的生肖| 什么声什么气| 膝盖后面叫什么| 偶尔头疼是什么原因| 智商105是什么水平| 型男是什么意思| 游泳有什么好处| 02年的属什么| 什么汗滴| 一是什么动物| 山川是什么意思| 脓疱疮是什么原因引起的| 今天什么日子老黄历| 吃什么不长肉还能瘦| 梅雨季节是什么时间| 离婚带什么证件才能办理| 南辕北辙什么意思| 隐形眼镜半年抛是什么意思| 维生素b5又叫什么| 脑萎缩是什么意思| 淼念什么| 秦皇岛有什么特产| 无水奶油是什么| 醋泡花生米有什么功效| 昆明的别称是什么| 女性肛裂要抹什么药好| 南瓜和什么相克| 吃坏东西肚子疼吃什么药| 性功能减退吃什么药| 八月一号是什么星座| 后背疼应该挂什么科| 牙龈流血是什么原因| 什么牌子的氨基酸洗面奶好| 维生素什么时候吃效果最好| 痢疾是什么意思| 转呼啦圈有什么好处| abi是什么意思| 10月15日是什么星座| 口干是什么病的前兆| 香蕉是什么季节的水果| 为什么经常拉肚子| 子宫前置是什么意思| 什么是高血脂| 左肺上叶钙化灶什么意思| 外包什么意思| 看见蝙蝠有什么预兆| 为所当为什么意思| 什么是先兆流产| 慢性咽喉炎什么症状| 6.25是什么星座| 猫咪冠状病毒什么症状| 娃哈哈纯净水是什么水| 福星贵人是什么意思| 扑尔敏是什么药| 成因是什么意思| 为什么老是流鼻血| 逍遥丸治什么| 周岁是什么意思| 肝病初期有什么症状| 内窗是什么意思| 猫藓长什么样| 小鱼爱吃什么| 倒模是什么| 什么样的春天| 喝什么酒不会胖| 蛋白粉有什么功效| 吃什么降低尿酸| aape是什么牌子| 月经提前了10天是什么原因| 蝙蝠属于什么动物| 什么颜色加什么颜色是紫色| cpu是什么意思| 一个斤一个页念什么| 身上麻是什么原因| 二胎什么时候放开的| 病毒感染是什么原因| 味精是什么提炼出来的| ube手术是什么意思| 股票举牌什么意思| 肾功能不好吃什么药| 什么地端详| 刮痧有什么作用| 干咳是什么病的前兆| 长骨刺是什么原因导致的| 弱碱性水是什么水| 肾炎是什么病| 神采什么什么| 共济失调是什么意思| 光是什么| 上呼吸道感染是什么病| 红枣和灰枣有什么区别| 什么样人不能吃海参| 女人吃山竹有什么好处| dc是什么| 野合什么意思| 吃什么可以提高新陈代谢| 上眼皮突然肿了是什么原因| 什么是皈依| 肠套叠是什么意思| 三月阳春好风光是什么生肖| 眼睛红痒用什么眼药水| 红豆薏仁水有什么功效| 红颜是什么意思| hbeab阳性是什么意思| 肠炎吃什么药好得快| 青蛙爱吃什么| 农历六月是什么生肖| cpa是什么| 一什么树林| 经常想吐恶心是什么原因| 人生导师是什么意思| 鸡骨草有什么功效| 水为什么会结冰| 低钾是什么原因造成的| 新奇的什么| 我国的国球是什么球| 减胎对另一个胎儿有什么影响| 每年什么时候最热| tc版是什么意思| 狗狗吐黄水是什么原因| 慢性盆腔炎吃什么药效果好| 血清铁是什么意思| 加拿大属于什么洲| 陕西八大怪是什么| ppt什么意思| 龙女是什么意思| 垣字五行属什么| 鱼用什么游泳| 属马五行属什么| 血红蛋白低吃什么可以补起来| 做肠镜有什么危害| 粒细胞低是什么原因| 天蝎座属于什么象星座| 血管炎不能吃什么食物| focus什么意思| 早上9点到10点是什么时辰| 龟吃什么食物| 什么体质人容易长脚气| 鞭挞是什么意思| c反应蛋白高说明什么| 揪心是什么意思| 心律不齐房颤吃什么药| 什么情况下会感染hpv病毒| 逍遥丸的功效和作用是什么| 甲状腺手术后可以吃什么水果| 小孩不吃饭是什么原因| 中国铁塔是干什么的| 什么是留守儿童| 窦性心动过速什么意思| 逆天改命是什么意思| 暧昧是什么意思| 什么是天丝面料| 喝醉是什么感觉| 肚子有水声是什么原因| 小猪佩奇为什么这么火| 上梁不正下梁歪什么意思| 憩室是什么意思| 前庭功能检查是查什么| 梦见割草是什么意思| 维c之王是什么水果| 起居是什么意思| 炙什么意思| 加德纳菌阳性是什么意思| 光天化日什么意思| 复合是什么意思| 九王念什么| 央行行长什么级别| 12月14日是什么星座| 治前列腺炎吃什么药效果最好| 小米什么时候成熟| 脾胃虚弱能吃什么水果| 检查怀没怀孕挂什么科| beetle是什么车| 莱猪是什么| 气血不足吃什么药最好| 天涯海角是什么生肖| 反胃想吐吃什么药| 人为什么要有性生活| 地盆是一种什么病| 硬核是什么意思| 声线是什么意思| 白介素2是治疗什么病的| 为什么会得胆囊炎| 孕早期吃什么好| 永垂不朽的垂是什么意思| 左眼皮跳代表什么| 无回声结节是什么意思| 育红班是什么意思| 脑梗适合吃什么食物| 百度Vai al contenuto

??????·??С?????????? ?????й????????????

Da Wikipedia, l'enciclopedia libera.
百度 在今后的工作实践中,要弘扬老一辈革命家的精神,进一步坚定理想信念,在中国共产党的领导下,自觉践行社会主义核心价值观,不断提升创新能力,积极推动互联网行业健康安全发展,为党的十九大胜利召开营造良好的氛围!

L'algoritmo di Euclide è un algoritmo per trovare il massimo comune divisore (indicato di seguito con MCD) tra due numeri interi. è uno degli algoritmi più antichi conosciuti, essendo presente negli Elementi di Euclide[1] intorno al 300 a.C.; tuttavia, probabilmente l'algoritmo non è stato scoperto da Euclide, ma potrebbe essere stato conosciuto anche 200 anni prima. Certamente era conosciuto da Eudosso di Cnido intorno al 375 a.C.; Aristotele (intorno al 330 a.C.) ne ha fatto cenno ne I topici, 158b, 29-35. L'algoritmo non richiede la fattorizzazione dei due interi.

Dati due numeri naturali e , l'algoritmo prevede che si controlli se è zero. Se lo è, è il MCD. Se non lo è, si deve dividere e definire come il resto della divisione (operazione indicata con "a modulo b" più sotto). Se allora si può affermare che è il MCD cercato, altrimenti occorre assegnare e e ripetere nuovamente la divisione. L'algoritmo può essere espresso in modo naturale utilizzando la ricorsione in coda.

Tenendo nota dei quozienti ottenuti durante lo svolgimento dell'algoritmo, si possono determinare due interi e tali che . Questo è noto con il nome di algoritmo di Euclide esteso.

Questi algoritmi possono essere usati, oltre che con i numeri interi, in ogni contesto in cui è possibile eseguire l'operazione di divisione con resto. Ad esempio, l'algoritmo funziona per i polinomi ad una indeterminata su un campo K, o polinomi omogenei a due indeterminate su un campo, o gli interi gaussiani. Un oggetto algebrico in cui è possibile eseguire la divisione col resto è chiamato anello euclideo.

Euclide originariamente formulò il problema geometricamente, per trovare una "misura" comune per la lunghezza di due segmenti, e il suo algoritmo procedeva sottraendo ripetutamente il più corto dal più lungo. Questo procedimento è equivalente alla implementazione seguente, che è molto meno efficiente del metodo indicato sopra.

Una scrittura in pseudocodice dell'algoritmo (in cui ?mod? indica il resto della divisione intera) è la seguente[2]:

inizia
    leggi (a, b)
    finché b > 0 fai:
        r <- mod(a, b)
        a <- b
        b <- r
    fine ciclo
    scrivi (a, "è il massimo comun divisore cercato")
finisci.

Dimostrazione della correttezza dell'algoritmo

[modifica | modifica wikitesto]

Siano e interi positivi assegnati, e sia il loro MCD. Definiamo la successione di ricorrenza corrispondente ai passi dell'algoritmo di Euclide: , , , e è il resto della divisione di per , cioè . Per definizione di resto nella divisione, per ogni , quindi la successione dei è strettamente decrescente, e quindi esiste un tale che . Vogliamo dimostrare che . Infatti, per induzione si ha per ogni che . Inoltre, sempre per induzione, divide per ogni , quindi divide anche per ogni , quindi .

Tempo di calcolo

[modifica | modifica wikitesto]

Quando si analizza il tempo di calcolo dell'algoritmo di Euclide, si trova che i valori di input che richiedono il maggior numero di divisioni sono due successivi numeri di Fibonacci, e il caso peggiore richiede O(n) divisioni, dove è il numero di cifre nell'input. Occorre anche notare che le divisioni non sono operazioni atomiche (se i numeri sono più grandi della dimensione naturale delle operazioni aritmetiche del computer), visto che la dimensione degli operandi può essere di cifre. Allora il tempo di calcolo reale è quindi .

Questo tempo è comunque considerevolmente migliore rispetto all'algoritmo euclideo originale, in cui l'operazione di modulo è effettuata mediante ripetute sottrazioni in passi. Di conseguenza, questa versione dell'algoritmo richiede un tempo pari a per numeri con cifre, o per il numero .

L'algoritmo di Euclide è ampiamente usato nella pratica, specialmente per numeri piccoli, grazie alla sua semplicità. Un algoritmo alternativo, l'algoritmo del MCD binario, utilizza la rappresentazione binaria dei computer per evitare le divisioni e quindi aumentare l'efficienza, sebbene anch'esso sia dell'ordine di : infatti su molte macchine reali permette di diminuire le costanti nascoste nella notazione "O grande".

Frazioni continue

[modifica | modifica wikitesto]

I quozienti che compaiono quando l'algoritmo euclideo viene applicato ai valori di input e sono proprio i numeri che compaiono nella rappresentazione in frazione continua della frazione . Si prenda l'esempio di e usato prima. Questi sono i calcoli con i quozienti in evidenza:

Da questo elenco si può vedere che

.

Questo metodo può anche essere usato per valori di e reali; se è irrazionale allora l'algoritmo euclideo non ha termine, ma la sequenza di quozienti che si calcola costituisce sempre la rappresentazione (ora infinita) di in frazione continua.

C e C++ (algoritmo iterativo)

/* Algoritmo iterativo */
int euclide(int a, int b)
{
    int r; // resto della divisione
    while(b != 0) //ripete finché non riduce b a zero
    {
         r = a % b; // in r salva il resto della divisione tra a e b
         a = b; // scambia il ruolo di a e b
         b = r; // in b ora c'è r = a % b
    }
    return a; //... e quando b è (o è diventato) 0, il risultato è in a
}

C e C++ (algoritmo ricorsivo)

/* Algoritmo ricorsivo */
int euclide(int a, int b)
{
    if(b == 0)
        return(a);
    else
        return euclide(b, a % b); // la funzione richiama sé stessa
}

Scala (algoritmo ricorsivo)

@tailrec
def euclide(a: Int, b: Int): Int =
    if (b == 0)
      a
    else
      euclide(b, a % b)

MATLAB (algoritmo iterativo)

function out = euclide(a, b)
    if(b == 0)
        out = a;
    elseif(b == 1)
        out = 1;
    else
        out = euclide(b, mod(a,b));
    end
    
end

Python (algoritmo iterativo)

def euclide(a, b):
    while b:
        a, b = b, a % b
    return a

Ruby (algoritmo iterativo)

def euclide(a, b)
  while b != 0 do
    a, b = b, a % b
  end
  a
end

Pascal (algoritmo iterativo)

function euclide(a, b: integer): integer;
var
    r: integer;
begin
    if b = 0 then 
        MCD := a
    else 
    begin
        r := (a mod b);
        while not (r = 0) do
        begin  
            a := b;
            b := r;
            r := (a mod b);
        end;
        MCD := b;
    end;
end;

BASIC (vb.net, algoritmo iterativo)

Function Euclide(ByVal a As Int16, ByVal b As Int16) As Int16
    Dim r As Int16 = a Mod b

    While (r <> 0)
        a = b
        b = r
        r = a Mod b
    Wend

    Return b
End Function

In questo algoritmo è stato usato per la rappresentazione numerica il tipo "int16", ma può essere cambiato a piacimento con qualsiasi altro tipo di variabile numerica secondo i bisogni del programma.

PHP (algoritmo iterativo)

function euclide($a, $b) {
    while ($b) {
        list($a, $b) = array($b, $a % $b);
    }
    return $a;
}

Java (algoritmo iterativo)

private static int euclide(int a, int b) {
    int r;
    while (b != 0) {
        r = a % b;
        a = b;
        b = r;
    }
    return Math.abs(a);
}

Rust[3] (algoritmo iterativo)

fn euclide(mut a: u64, mut b: u64) -> u64 {
    assert! (a != 0 && b != 0);
    while b != 0 {
        let r = a % b;
        a = b;
        b = r;
    }
    a
}

Go (algoritmo iterativo)

func euclide(a, b int) int {
	for b != 0 {
		a, b = b, a%b
	}
	return a
}
  1. ^ F. Acerbi, Euclide, Tutte le opere, 2007, Bompiani. (EN) Thomas L. Heath, The Thirteen Books of Euclid's Elements, 2nd ed. [Facsimile. Original publication: Cambridge University Press, 1925], 1956, Dover Publications
  2. ^ Euclide, algoritmo di - Treccani, su Treccani. URL consultato il 27 dicembre 2023.
  3. ^ (EN) Programming Rust, su GitHub. URL consultato il 6 gennaio 2023.
  • Donald Knuth., Charles E. Leiserson, Ronald L. Rivest, e Clifford Stein, Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7. Section 31.2: Greatest common divisor, pp. 856–862.

Voci correlate

[modifica | modifica wikitesto]

Altri progetti

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
Controllo di autoritàGND (DE4659898-4
  Portale Matematica: accedi alle voci di Wikipedia che trattano di matematica
狗癣用什么药最有效 什么人不适合吃胃复春 橄榄枝象征着什么 梦见别人打架是什么意思 什么叫磨玻璃结节
蘑菇和什么不能一起吃 什么东西放进去是硬的拿出来是软的 敬谢不敏是什么意思 舒服的意思是什么 守旧是什么意思
真命题是什么意思 什么是气溶胶 胆囊切除有什么危害 长痘痘去医院挂什么科 陈皮是什么做的
栓是什么意思 gmp认证是什么意思 知了为什么叫 谏什么意思 狼吞虎咽的意思是什么
忧虑是什么意思hcv8jop8ns9r.cn flour是什么意思hcv7jop9ns6r.cn 碱和小苏打有什么区别huizhijixie.com 什么名字好听男生hcv9jop8ns3r.cn saa偏高说明什么hcv9jop2ns4r.cn
声音沙哑是什么原因aiwuzhiyu.com 杨枝甘露是什么意思hcv9jop8ns0r.cn 塑料属于什么垃圾hcv8jop7ns3r.cn 什么人不能吃黄芪hcv8jop4ns1r.cn av是什么hcv9jop1ns0r.cn
胪是什么意思hcv9jop4ns7r.cn 鬼最怕什么颜色96micro.com gs什么意思hcv9jop5ns9r.cn 脉跳的快是什么原因hcv8jop0ns8r.cn 芙蓉是什么hcv8jop7ns1r.cn
手指倒刺是什么原因hcv9jop5ns5r.cn 国债什么意思hcv7jop6ns7r.cn 89年属什么的hcv7jop6ns9r.cn 识大体是什么意思hcv8jop8ns8r.cn 增致牛仔属于什么档次hcv9jop0ns2r.cn
百度