<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Clasa_a_IX-a_lec%C8%9Bia_9</id>
	<title>Clasa a IX-a lecția 9 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.algopedia.ro/wiki/index.php?action=history&amp;feed=atom&amp;title=Clasa_a_IX-a_lec%C8%9Bia_9"/>
	<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Clasa_a_IX-a_lec%C8%9Bia_9&amp;action=history"/>
	<updated>2026-04-13T00:39:14Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.algopedia.ro/wiki/index.php?title=Clasa_a_IX-a_lec%C8%9Bia_9&amp;diff=18283&amp;oldid=prev</id>
		<title>Bella: Created page with &quot;== Algoritmul lui Euclid - cmmdc / cmmmc == [http://ro.wikipedia.org/wiki/Algoritmul_lui_Euclid Algoritmul lui Euclid] este o metodă eficientă de calcul al celui mai mare di...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.algopedia.ro/wiki/index.php?title=Clasa_a_IX-a_lec%C8%9Bia_9&amp;diff=18283&amp;oldid=prev"/>
		<updated>2023-03-14T20:39:30Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Algoritmul lui Euclid - cmmdc / cmmmc == [http://ro.wikipedia.org/wiki/Algoritmul_lui_Euclid Algoritmul lui Euclid] este o metodă eficientă de calcul al celui mai mare di...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Algoritmul lui Euclid - cmmdc / cmmmc ==&lt;br /&gt;
[http://ro.wikipedia.org/wiki/Algoritmul_lui_Euclid Algoritmul lui Euclid] este o metodă eficientă de calcul al celui mai mare divizor comun (&amp;lt;tt&amp;gt;CMMDC&amp;lt;/tt&amp;gt;). El este denumit după matematicianul grec Euclid, care l-a inventat. Un avantaj important al algoritmului lui Euclid este că el poate găsi &amp;lt;tt&amp;gt;CMMDC&amp;lt;/tt&amp;gt; eficient fără să trebuiască să calculeze factorii primi ai numerelor.&lt;br /&gt;
&lt;br /&gt;
Euclid a observat că &amp;lt;tt&amp;gt;CMMDC&amp;lt;/tt&amp;gt; al două numere &amp;lt;tt&amp;gt;a&amp;lt;/tt&amp;gt; și &amp;lt;tt&amp;gt;b&amp;lt;/tt&amp;gt; rămîne același dacă se scade numărul mai mic din cel mai mare (demonstrați!). Presupunînd că &amp;lt;tt&amp;gt;a&amp;lt;/tt&amp;gt; este numărul mai mare, scăzînd în mod repetat pe &amp;lt;tt&amp;gt;b&amp;lt;/tt&amp;gt; din &amp;lt;tt&amp;gt;a&amp;lt;/tt&amp;gt;, în &amp;lt;tt&amp;gt;a&amp;lt;/tt&amp;gt; va rămîne restul împărțirii lui &amp;lt;tt&amp;gt;a&amp;lt;/tt&amp;gt; la &amp;lt;tt&amp;gt;b&amp;lt;/tt&amp;gt;. Rezultă că &amp;lt;tt&amp;gt;CMMDC(a, b)&amp;lt;/tt&amp;gt; este totuna cu &amp;lt;tt&amp;gt;CMMDC(b, a % b)&amp;lt;/tt&amp;gt;. Algoritmul care rezultă este următorul: luăm restul împărțirii lui &amp;lt;tt&amp;gt;a&amp;lt;/tt&amp;gt; la &amp;lt;tt&amp;gt;b&amp;lt;/tt&amp;gt;, apoi restul împărțirii lui &amp;lt;tt&amp;gt;b&amp;lt;/tt&amp;gt; la rest, și așa mai departe, pînă ce obținem un rest zero. &amp;lt;tt&amp;gt;CMMDC&amp;lt;/tt&amp;gt; este numărul rămas, cel diferit de zero.&lt;br /&gt;
&lt;br /&gt;
Exemplu&lt;br /&gt;
Să calculăm &amp;lt;tt&amp;gt;CMMDC(252, 105)&amp;lt;/tt&amp;gt;. Calculăm &amp;lt;tt&amp;gt;252 % 105 = 42&amp;lt;/tt&amp;gt;. De aceea va trebui să calculăm &amp;lt;tt&amp;gt;CMMDC(105, 42)&amp;lt;/tt&amp;gt;. În continuare calculăm &amp;lt;tt&amp;gt;105 % 42 = 21&amp;lt;/tt&amp;gt;. Deci, vom calcula &amp;lt;tt&amp;gt;CMMDC(42, 21)&amp;lt;/tt&amp;gt;. Calculăm &amp;lt;tt&amp;gt;42 % 21 = 0&amp;lt;/tt&amp;gt;. Deoarece restul este zero &amp;lt;tt&amp;gt;CMMDC&amp;lt;/tt&amp;gt; va fi ultimul număr nenul, adica &amp;lt;tt&amp;gt;21&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====Algoritmul ce foloseste structura &amp;#039;&amp;#039;while do&amp;#039;&amp;#039;====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
!Pseudocod&lt;br /&gt;
!C&lt;br /&gt;
!C++&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
 citeste a,b;&lt;br /&gt;
 while( b &amp;lt;&amp;gt; 0 )&lt;br /&gt;
  r ← a mod b;&lt;br /&gt;
  a ← b;&lt;br /&gt;
  b ← r;&lt;br /&gt;
 scrie a&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int main(){&lt;br /&gt;
int a,b,r;&lt;br /&gt;
scanf(&amp;quot;%d%d&amp;quot;,&amp;amp;a,&amp;amp;b);&lt;br /&gt;
while( b &amp;gt; 0){&lt;br /&gt;
 r = a % b;&lt;br /&gt;
 a = b;&lt;br /&gt;
 b = r;&lt;br /&gt;
}&lt;br /&gt;
printf(&amp;quot;%d&amp;quot;, a);&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
int main(){&lt;br /&gt;
int a,b,r;&lt;br /&gt;
cin&amp;gt;&amp;gt; a &amp;gt;&amp;gt; b;&lt;br /&gt;
while( b &amp;gt; 0 ){&lt;br /&gt;
 r = a % b;&lt;br /&gt;
 a = b;&lt;br /&gt;
 b = r;&lt;br /&gt;
}&lt;br /&gt;
cout &amp;lt;&amp;lt; a;&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Algoritmul ce foloseste structura &amp;#039;&amp;#039;do while&amp;#039;&amp;#039;====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
!Pseudocod&lt;br /&gt;
!C&lt;br /&gt;
!C++&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
citeste a, b;&lt;br /&gt;
daca ( b &amp;gt; 0 ) atunci&lt;br /&gt;
  executa&lt;br /&gt;
    r ← a mod b;&lt;br /&gt;
    a ← b;&lt;br /&gt;
    b ← r;&lt;br /&gt;
  cat_timp( r &amp;lt;&amp;gt; 0 )&lt;br /&gt;
scrie a&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int main(){&lt;br /&gt;
int a, b, r;&lt;br /&gt;
scanf( &amp;quot;%d%d&amp;quot;, &amp;amp;a, &amp;amp;b );&lt;br /&gt;
if( b &amp;gt; 0)&lt;br /&gt;
  do{&lt;br /&gt;
    r = a % b;&lt;br /&gt;
    a = b;&lt;br /&gt;
    b = r;&lt;br /&gt;
  }while( r != 0 );&lt;br /&gt;
printf( &amp;quot;%d&amp;quot;, a );&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
int main(){&lt;br /&gt;
int a, b, r;&lt;br /&gt;
cin&amp;gt;&amp;gt; a &amp;gt;&amp;gt; b;&lt;br /&gt;
if( b &amp;gt; 0)       &lt;br /&gt;
  do{&lt;br /&gt;
    r = a % b;&lt;br /&gt;
    a = b;&lt;br /&gt;
    b = r;&lt;br /&gt;
  }while( r != 0 );&lt;br /&gt;
cout &amp;lt;&amp;lt; a;&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Observatie: Atentie, daca b poate fi si 0, trebuie sa testam valoarea acestuia inainte de intrarea i nstructura repetitiva.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Aplicatie&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Doi prieteni, un iepure și o broscuță joacă un joc: pornesc de la o linie de start și încep să sară. Broasca sare &amp;lt;tt&amp;gt;n&amp;lt;/tt&amp;gt; centimetri, iar iepurele &amp;lt;tt&amp;gt;m&amp;lt;/tt&amp;gt; centimetri. Cine este mai în spate vine la rînd să sară. Jocul se termină atunci cînd iepurele și broasca sînt iarăși la egalitate. Cîți centimetri au parcurs cei doi prieteni?&lt;br /&gt;
&lt;br /&gt;
[[Image:cmmmc.gif|frame|none|Săriturile broscuței și iepurelui]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Răspuns&amp;#039;&amp;#039;&amp;#039;: după cum se vede și din figură, broscuța și iepurele vor sări o lungime egală cu &amp;lt;tt&amp;gt;CMMMC(m, n)&amp;lt;/tt&amp;gt;. Precum știm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;CMMMC(m, n) = m ∙ n / CMMDC(m, n)&amp;lt;/pre&amp;gt;.&lt;br /&gt;
= Tema =&lt;br /&gt;
* [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=378 pavare] teorie&lt;br /&gt;
* [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=410 cmmdc2]&lt;br /&gt;
* [https://www.pbinfo.ro/?pagina=probleme&amp;amp;id=2771,Covorul Covorul]&lt;br /&gt;
* [https://www.pbinfo.ro/probleme/61/afisaredivizoricomuni afisaredivizoricomuni]&lt;/div&gt;</summary>
		<author><name>Bella</name></author>
	</entry>
</feed>