a1-1.docx

Upload: iosif-vlad

Post on 07-Jul-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/18/2019 a1-1.docx

    1/6

  • 8/18/2019 a1-1.docx

    2/6

     0l)oritmul lui Euclid cmmdc a două numere

     0l)oritmul lui Euclid este o metodă eficientă de calcul al celui mai mare divi&or comun *. El este denumit după

    matematicianul )rec Euclid' care la inventat. 4n avanta( important al al)oritmului lui Euclid este că el poate

    )ăsi * eficient fără să tre5uiască să calcule&e factorii primi ai numerelor.

    Euclid a o5servat că * al două numere a  iș  + rămîne acela i dacă se scade numărul mai mic din cel mai mareș

    demonstra i,. resupunînd căț  a este numărul mai mare' scă&înd în mod repetat pe + dina' în a va rămîne restul

     împăr irii luiț  a la +. 6e&ultă că *(a, +) este totuna cu *(+, a % +). 0l)oritmul care re&ultă este

    următorul: luăm restul împăr irii luiț  a la +' apoi restul împăr irii luiț  + la rest' i a a mai departe' pînă ce o5 inem un restș ș ț&ero. * este numărul rămas' cel diferit de &ero.

    77D cu al)oritmul lui Euclid

    Exemplu

    Să calculăm *(22, 10). alculăm 22 % 10 = -2. De aceea va

    tre5ui să calculăm *(10, -2). 8n continuare calculăm 10 % -2 = 21.

    Deci' vom calcula *(-2, 21). alculăm -2 % 21 = 0. Deoarece restul

    este &ero * va fi ultimul număr nenul' adica 21.

    Schema logică i programulș

    9ată al)oritmul scris ca scemă lo)ică i implementarea sa în lim5a(ul :ș

    #include 

    int main() {

      int a, +, r;

      scan( "%d%d", 'a, '+ );

      while ( + > 0 ) {

      r = a % +;

      a = +;

      + = r;

     

      print( "%d", a );

      return 0;

    %otă: remarca i căț  nu este nevoie să interscim5ăm varia5ilele dacă a este ini ial mai mic caț  +. După prima execu ieț

    a 5uclei while ele se vor interscim5a în mod natural.

    Exerci iuț

    Doi prieteni' un iepure i o 5roscu ă (oacă un (oc: pornesc de la o linie de start i încep să sară. ;roascaș ț ș

    sare n centimetri' iar iepurele m centimetri. ine este mai în spate vine la rînd să sară.

  • 8/18/2019 a1-1.docx

    3/6

    ava(: să se pave&e un dreptun)i cu pătrate maximale. Se citesc a  iș  + numere naturale'

    dimensiunile laturilor dreptun)iului' să se afi e&e latura pătratelor cele mai mari cu care putem acoperiș

    dreptun)iul' precum i numărul lor. Exemple: dacăș  a este 3 iș  + este # vom afi aș  1  iș  12 cel mai mare

    pătrat cu care putem acoperi dreptun)iul are latură 1  i avem nevoie deș  12 astfel de pătrate

    dacă a este /  iș  + este  vom afi aș  2  iș  12 dacă a este 12  iș  + este 20 vom afi aș  -  iș  1.

    ?include @iostreamA

    usin) namespace std

    int main B

      int a' 5' r

      float nr'nr1

     cinAAaAA5

     nr=a*5

      Cile 5 A " B

      r = a 5

      a = 5

      5 = r

     

      nr1=nrFaFa

      cout@@a@@G G@@nr1

      return "

    ifră: se cite te un număr ș  n' să se spună dacă este format dintro sin)ură cifră' repetată.

    Exemple:  este un astfel de număr' 2-2- nu este'  este'  este.

    ?include @iostreamA

    usin) namespace std

    int main

  • 8/18/2019 a1-1.docx

    4/6

     B

     int x

     5ool e)ale

     cout@@GDati valoarea lui x= GcinAAx

     int x1=x

     e)ale=true FF pp ca cifrele numarului x sunt e)ale

     Cilex1A=1"HHe)ale,=false

     B

     ifx11",=x1F1"1"e)ale=false

     x1=x1F1"

     

     ife)ale==truecout@@GD0 ,G

     else cout@@G%4 ,G

    return "

     

    Irdonare: se citesc patru numere' a' +' c  iș  d. Să se afi e&e în ordine crescătoare. Jolosi iș ț

    interscim5ări de varia5ile' precum a i vă&ut mai sus' în lec ie.ț ț

    ?include @iostreamA

    usin) namespace std

    int main B

      int a' 5' c' d'aux

      cinAAaAA5AAcAAd

      if a A 5 B

  • 8/18/2019 a1-1.docx

    5/6

  • 8/18/2019 a1-1.docx

    6/6

      return "

    ro5lemă de lo)ică: un re)e ar fi tre5uit să primească &ece fi icuri ce este acela un fi ic de monede a cîte &eceș ș

    )rame fiecare monedă. Din nefericire unul din fi icuri con ine &ece monede a cîte K )rame fiecare monedă' în locș ț

    de &ece. Dispunem de un cîntar cu eroare mai mică de un )ram i avem voie să facem o sin)ură cîntărire. umș

    vom proceda pentru a descoperi fi icul cu monede mai u oareș ș