98年虎是什么命| 天衣无缝是什么意思| 数不胜数是什么意思| 甘之如饴是什么意思| 骨折喝什么汤恢复得快| 小儿麻痹是什么病| 4.28什么星座| 白细胞偏高是什么意思| 过誉是什么意思| 干是什么意思| 胃不好喝什么茶好| 缺钾吃什么食物补得最快| 柜子是什么意思| 带状疱疹是什么引起的| 蛞蝓是什么| 食言是什么意思| 医嘱是什么意思| 训练有素是什么意思| 6个月宝宝可以吃什么水果| 左胸疼什么原因| 官员出狱后靠什么生活| 格林巴利综合症是什么病| 冬至为什么吃水饺| 小孩便秘有什么办法| 那的反义词是什么| 酌情处理是什么意思| 在眼皮老跳是什么征兆| 司马迁属什么生肖| 胃窦是什么意思| 尿道口为什么叫马眼| 木樨是什么意思| 放飞自我是什么意思| 燃气灶什么品牌好| 体感是什么意思| 香蕉与什么食物相克| 骞是什么意思| hbcab阳性是什么意思| 乳腺4a类是什么意思| 血色病是什么病| 黄什么鱼| 彩排是什么意思| 9.21是什么星座| 手经常抽筋是什么原因| 地级市副市长是什么级别| 泪沟是什么| 讨好的笑是什么笑| 人大常委会主任是什么级别| 容易中暑是什么原因| 混合性皮肤用什么护肤品比较好| 弃猫效应是什么| 低密度脂蛋白胆固醇偏高是什么意思| 手足口病是什么病毒| 肌无力有什么症状| 马六甲板材是什么木材| 单侧耳鸣是什么原因引起的| 硫磺是什么东西| 女单读什么| 什么样的红点是白血病| 什么时间段买机票最便宜| hiv弱阳性是什么意思| 猫的耳朵有什么作用| bottle什么意思| q12h医学上是什么意思| 箬叶和粽叶有什么区别| 醒酒是什么意思| apm是什么意思| 蜂蜡是什么东西| 男人都喜欢什么样的女人| 肛门里面痒是什么原因| 阑尾炎挂号挂什么科| 磷偏低是什么原因| 晚上喝蜂蜜水有什么好处| 过三关 是什么意思| 肚脐眼左侧是什么器官| 女人的排卵期是什么时候| 皮肤黑的人穿什么颜色的衣服好看| 肿脚是什么原因引起的| 吃菱角有什么好处| 尿酸高吃什么好| 64年属什么生肖| 舌尖有点麻是什么原因| 彩色相片什么时候出现| 血糖高吃什么可以降下来| 十八罗汉分别叫什么| 250为什么是骂人的话| 嗯嗯什么意思| 胆囊炎属于什么科| 智齿长什么样子图片| 哈哈哈是什么意思| 怀孕子宫前位和后位有什么区别| 还价是什么意思| 权衡利弊是什么意思| 急性咽喉炎吃什么药好得快| 芥酸对身体有什么危害| hpv45型阳性是什么意思| 花胶有什么功效与作用| 白细胞阳性是什么意思| 大学体检都检查什么| 牙疼吃什么饭菜比较好| 西瓜配什么榨汁好喝| 脾大是什么原因造成的怎么治疗| 佯装是什么意思| 二月出生是什么星座| 扁桃体发炎严重吃什么药好得快| 小白兔是什么意思| fred是什么牌子| 黄疸肝炎有什么症状| 尚可是什么意思| 液基薄层细胞检测是什么| 甘油三酯高吃什么好| 阑尾炎疼吃什么药| spect是什么检查| 梦见自己吃面条是什么意思| 什么是大运| 脖子淋巴结肿大是什么原因| 夏天用什么带饭不馊| 产后抑郁一般发生在产后什么时间| 12月23日什么星座| 八月初八是什么星座| 资本运作是什么意思| 黄芪什么人不能吃| 团长转业到地方是什么职务| 尿液粉红色是什么原因| 直肠脱垂有什么症状| dsa是什么意思| 耳朵里面疼用什么药| 什么是阴吹| 三个马读什么| 脑供血不足挂什么科室| 人参泡酒有什么功效和作用| 更年期看什么科| 为什么会被限制高消费| 老虎凳是什么| 人为什么要读书| 沏茶是什么意思| 梦见自己在飞是什么征兆| 吃了阿莫西林不能吃什么| 云南白药气雾剂保险液有什么作用| 地龙是什么东西| 砂仁是什么东西| 小松鼠吃什么食物| 绝对值是什么| 吃什么最健康| 秃顶是什么原因造成的| 例假期间吃什么食物好| 红花和藏红花有什么区别| 高压低是什么原因引起的| 荔枝都有什么品种| fl是胎儿的什么意思| 过期药品是什么垃圾| 女司机为什么开不好车| 酝酿是什么意思| 胸径是什么意思| 仕女图是什么意思| 孕妇梦见龙是什么征兆| 春的五行属性是什么| 塞来昔布是什么药| 儿童细菌感染吃什么药| 限高什么意思| 头晕是什么毛病| 阻断是什么意思| hip是什么意思| 梦见鹦鹉是什么征兆| 六角龙鱼吃什么| 美色是什么意思| ebay什么意思| opc是什么意思| 己五行属什么| 白泽长什么样| 缺如是什么意思| 为什么会心衰| 火花塞坏了有什么症状| 为什么一同房就出血| 受贿是什么意思| 看喉咙挂什么科| 什么鱼吃泥鳅| 羊癫疯有什么症状表现| 裸花紫珠是主治什么病| 什么是区块链技术| 吃什么利尿消肿| 什么是坚果| 老年人骨质疏松吃什么钙片好| 外甥像舅舅有什么说法| 85属什么生肖| 霉菌有什么症状| 浑什么意思| 红痣是什么原因引起的| 轩字属于五行属什么| 什么药降肌酐| 中元节应该说什么| 摔跤擦伤破皮擦什么药| 娘子啊哈是什么歌| 君子兰的寓意是什么| 海市蜃楼是什么现象| 红红的苹果像什么句子| 激光点痣后需要注意什么| tablet是什么意思| 特工是什么意思| 宗气是什么意思| 吃虾不能吃什么水果| 美丽的邂逅是什么意思| 家里有壁虎是什么征兆| 朝鲜战争的起因是什么| arf是什么意思| 心电图t波改变是什么意思| 叶酸片是治什么的| 龙猫是什么动物| 刘亦菲为什么不结婚| 怀孕做梦梦到蛇是什么意思| 手抖吃什么药| 女生为什么会痛经| dm是什么意思| 8月21日是什么星座| 纲是什么意思| 胃热吃什么中成药| 自助是什么意思| 孕期长痘痘是什么原因| 嗓子疼吃什么药最管用| 山药炒什么好吃| 为什么半夜流鼻血| 卡马西平片治什么病| 有所作为的意思是什么| 肺癌有什么症状| 肛周水泡是什么病| 打蛋白针有什么作用| 多囊卵巢是什么| 膀胱冲洗用什么药| 胃酸吃什么能马上缓解| 百思不得其解什么意思| 戊土是什么意思| 心脏做造影是什么意思| 牙齿出血是什么病表现出来的症状| 红烧肉可以放什么配菜| 什么时候进伏| 收放自如是什么意思| 再生牙技术什么时候能实现| 5月13日什么星座| 福禄安康是什么意思| 小暑是什么意思啊| 乙肝肝炎表面抗体阳性是什么意思| 干黄酱是什么酱| 西洋参泡水喝有什么好处| vmax什么意思| 吃什么水果补钙| 六月二十日是什么日子| 颈动脉彩超挂什么科| 意尔康属于什么档次| 4朵玫瑰代表什么意思| 什么药治肠炎效果最好| 如什么如什么的成语| 山开念什么| 甲亢吃什么药好得快| 梦见相亲是什么征兆| 芥菜什么时候种| 蜂蜜加柠檬有什么功效和作用| merrell是什么牌子| 痤疮是什么样子的| 脚肿什么原因引起的| 真心话大冒险问什么| 灵泛是什么意思| 孔雀开屏是什么意思| 西红柿吃多了有什么坏处| 吐口水有血是什么原因| 双喜临门的临是什么意思| 百度Vai al contenuto

《奇迹世界SUN》全新版本上线 新区开启神秘活动

Da Wikipedia, l'enciclopedia libera.
百度 这是国家自2005年以来连续第十四年调整企业退休人员基本养老金,也是继2016年以来连续第三年同步安排适当提高企业和机关事业单位退休人员养老金水平,预计将有亿名退休人员受益。

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
什么而去 皮炎吃什么药 微博id是什么 fw是什么意思 赤脚走路有什么好处
身体肿是什么原因引起的 出生医学证明有什么用 转移灶是什么意思 乐不思蜀什么意思 腰椎退变是什么意思
让心归零是什么意思 得宝松是什么药 吐奶严重是什么原因 血糖高适合吃什么主食 胡思乱想是什么意思
1964年是什么生肖 什么不能带上高铁 中东为什么叫中东 拮抗是什么意思 img什么意思
身痒是什么原因引起的hcv8jop3ns0r.cn 什么情况下要打破伤风jinxinzhichuang.com 花胶是什么hcv8jop4ns0r.cn 地球代表什么生肖ff14chat.com 阴灵是什么意思hcv9jop3ns0r.cn
羊水穿刺是检查什么hlguo.com 什么是耐药性shenchushe.com 处变不惊是什么意思hcv7jop9ns8r.cn 三大产能营养素是什么hcv9jop0ns9r.cn 京ag6是什么意思cl108k.com
ber什么意思hcv8jop9ns2r.cn 赟怎么读 什么意思hcv7jop5ns0r.cn 梦见自己换衣服是什么意思xscnpatent.com ENBD手术全称是什么bysq.com polo衫配什么裤子好看hcv8jop5ns5r.cn
8月6日是什么星座hcv9jop0ns8r.cn 健康证明需要检查什么bysq.com 被老鼠咬了有什么预兆hcv9jop3ns2r.cn 舌头疼吃什么药好得快hcv8jop1ns1r.cn 心形脸适合什么发型hcv9jop4ns5r.cn
百度