NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 9 - Největší společný dělitel (Euklidův algoritmus)

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Mircosoft
Tvůrce
Avatar
Mircosoft:13.7.2011 10:42

Mám takový dojem, že Eukleidův algoritmus je tohle:

  1. Pokud A=B, je největší společný dělitel rovný těmto číslům a končíme.
  2. Pokud A<>B, odečti od většího z nich to menší a vrať se na krok 1.
8-)
 
Odpovědět
13.7.2011 10:42
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Mircosoft
David Hartinger:13.7.2011 11:11

Nene, Euklidův je určitě tohle.

Odpovědět
13.7.2011 11:11
New kid back on the block with a R.I.P
Avatar
Mircosoft
Tvůrce
Avatar
Odpovídá na David Hartinger
Mircosoft:13.7.2011 13:08

Tak jsem si to nakonec musel pořádně nastudovat :)
http://en.wikipedia.org/…id_algorithm
Pravdu máme oba, postupným odečítáním menšího čísla vyjde to samé číslo jako při jednom modu. Jediný rozdíl je v rychlosti a použitých instrukcích.

 
Odpovědět
13.7.2011 13:08
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Mircosoft
David Hartinger:13.7.2011 15:04

Článek jsem doplnil, děkujeme za informaci :)

Odpovědět
13.7.2011 15:04
New kid back on the block with a R.I.P
Avatar
Kamil
Neregistrovaný
Avatar
Kamil:13.12.2011 16:17

A co když mám na vstupu dvě záporná čísla?

 
Odpovědět
13.12.2011 16:17
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na
David Hartinger:13.12.2011 19:08

Hraje snad znaménko čísla nějakou roli v jeho dělitelnosti? :)

Odpovědět
13.12.2011 19:08
New kid back on the block with a R.I.P
Avatar
danzurek
Člen
Avatar
danzurek:16.12.2011 8:58

Dobrý den, začínám v C# a mám za úkol určit Nejmenší společný násobek a největší společný dělitel pro více čísel, které zadá uživatel a právě s tím mám problém.

 
Odpovědět
16.12.2011 8:58
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na danzurek
David Hartinger:17.12.2011 11:25

Dobrý den,
algoritmus by neměl být problém použít pro více čísel. Např. pro čísla a, b, c, d nejprve vypočítáte v1 = gcd(a,b); v2 = gcd(v1, c); v3 = gcd(v2, d); Poslední výsledek v3 je ten konečný :) Stačí si jen naimplementovat nějaký cyklus nad polem, který vezme vždy gcd z posledního výsledku a dalšího prvku v poli.

Něco jako:

puvodni = pole[0];
for (i = 1; i < pole.length; i++)
{
  puvodni = gcd(puvodni, pole[i]);
}

Pro výpočet nejmenšího společného násobku lze použít opět funkci GCD (největšího společného dělitele):

int lcm(int a, int b) {
  if (a == 0 || b == 0)
    return 0;
  return (a * b) / gcd(a, b);
}
Odpovědět
17.12.2011 11:25
New kid back on the block with a R.I.P
Avatar
danzurek
Člen
Avatar
Odpovídá na David Hartinger
danzurek:23.12.2011 23:52

Děkuji za odpověď

 
Odpovědět
23.12.2011 23:52
Avatar
David Kruntorád:2.1.2016 17:17

A jak by to vypadalo v Céčku? :)

 
Odpovědět
2.1.2016 17:17
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 11.