Accesează aplicația

Materii

Algoritmi Fundamentali pentru Clasa a XI-a

2

0

I

Ioana Cuciurean

24.11.2025

Informatică și TIC

Algorimti fundamentali

70

24 nov. 2025

6 pagini

Algoritmi Fundamentali pentru Clasa a XI-a

I

Ioana Cuciurean

@ioanacuciurean

Iată un ghid concis despre algoritmi fundamentali în C++. Vei... Afișează mai mult

Page 1
Page 2
Page 3
Page 4
Page 5
Page 6
1 / 6
Algoritmi fundamentali

1.returnare

2.afisare

#include<iostream>
using namespace std;
int n;
int suma_cif(int x){
int S;
S=0;
While(x>0){

Algoritmi fundamentali de bază

Să începem cu funcții care procesează cifrele unui număr. Aceste funcții sunt esențiale pentru rezolvarea multor probleme de algoritmi.

Funcția suma_cif() calculează suma cifrelor unui număr. Aceasta folosește operația %10 pentru a extrage ultima cifră și /10 pentru a elimina cifra respectivă:

int suma_cif(int x) {
    int S = 0;
    while(x > 0) {
        S = S + x % 10;
        x = x / 10;
    }
    return S;
}

Funcția prod_cif_pare() calculează produsul cifrelor pare ale unui număr. Observă cum verificăm dacă cifra este pară cu condiția ifnn%10%2==0:

int prod_cif_pare(int n) {
    int p = 1;
    if(n == 0) p = 0;
    while(n > 0) {
        if(n%10%2 == 0)
            p = p*(n%10);
        n = n/10;
    }
    return p;
}

💡 Sfat util: Pentru a verifica dacă un număr este par, folosește operatorul modulo: numar % 2 == 0. Acest operator va fi esențial în multe algoritmi!

De asemenea, un algoritm fundamental este interschimbarea valorilor a două variabile. Pentru aceasta, avem nevoie de o variabilă auxiliară:

void interschimbare(int &x, int &y) {
    int aux;
    aux = x;
    x = y;
    y = aux;
}
Algoritmi fundamentali

1.returnare

2.afisare

#include<iostream>
using namespace std;
int n;
int suma_cif(int x){
int S;
S=0;
While(x>0){

Oglindirea unui număr și operații cu cifre

Când avem nevoie să inversăm cifrele unui număr, folosim algoritmul de oglindire. Este un algoritm util pentru verificarea palindroamelor sau pentru transformări numerice.

Iată algoritmul pentru a obține oglinditul unui număr:

long ogl_numar(long a) {
    long ogl = 0;
    while(a > 0) {
        ogl = ogl * 10 + (a % 10);
        a = a / 10;
    }
    return ogl;
}

Pentru a găsi cifra minimă dintr-un număr, parcurgem toate cifrele și păstrăm valoarea minimă întâlnită:

long cif_mini(long x) {
    long mini = x % 10;
    while(x > 0) {
        if((x % 10) < mini)
            mini = x % 10;
        x = x / 10;
    }
    return mini;
}

Un algoritm interesant este eliminarea cifrelor pare dintr-un număr. Construim un nou număr care conține doar cifrele impare din numărul original:

int eliminare(int n) {
    int p = 1, m = 0;
    while(n > 0) {
        if(n % 2 == 1) {  // dacă ultima cifră e impară
            m = m + (n % 10) * p;
            p = p * 10;
        }
        n = n / 10;
    }
    return m;
}

💡 Reține: Când construiești un număr din cifre individuale, folosești formula numar = numar * 10 + cifra pentru a adăuga cifre la dreapta, sau numar = cifra * putere + numar cuputere=10,100,etc.cu putere = 10, 100, etc. pentru a adăuga la stânga.

Algoritmi fundamentali

1.returnare

2.afisare

#include<iostream>
using namespace std;
int n;
int suma_cif(int x){
int S;
S=0;
While(x>0){

Transformări numerice și algoritmi matematici

Dublarea cifrelor pare este un algoritm util care construiește un nou număr dublând apariția cifrelor pare din numărul original:

long dublare(long n) {
    long p = 1;
    long nr = 0;
    while(n > 0) {
        if(n % 10 % 2 == 0) {  // dacă cifra e pară
            nr = nr + (n % 10) * p;
            p = p * 10;
        }
        nr = nr + (n % 10) * p;
        p = p * 10;
        n = n / 10;
    }
    return nr;
}

Conversia unui număr în baza 2 (binar) este un algoritm fundamental în informatică:

long baza2(long n) {
    long p = 1, nr = 0;
    while(n != 0) {
        nr = nr + (n % 2) * p;
        p = p * 10;
        n = n / 2;
    }
    return nr;
}

Calculul celui mai mare divizor comun (CMMDC) folosind algoritmul lui Euclid poate fi implementat în două moduri:

  1. Prin scăderi repetate:
void cmmdc(int a, int b) {
    while(a != b) {
        if(a > b)
            a = a - b;
        else 
            b = b - a;
    }
    cout << a;  // a este CMMDC-ul
}
  1. Prin împărțiri repetate (mai eficient):
long cmmdc(long a, long b) {
    long r;
    while(b != 0) {
        r = a % b;
        a = b;
        b = r;
    }
    return a;
}

💡 Important: Metoda cu împărțiri repetate este mult mai eficientă decât cea cu scăderi, mai ales pentru numere mari. Încearcă să o folosești de fiecare dată când calculezi CMMDC!

Algoritmi fundamentali

1.returnare

2.afisare

#include<iostream>
using namespace std;
int n;
int suma_cif(int x){
int S;
S=0;
While(x>0){

Calculul CMMMC și algoritmi pentru divizori

Cel mai mic multiplu comun (CMMMC) poate fi calculat folosind relația cu CMMDC:

void cmmmc(long a, long b) {
    long p = a * b;
    while(a != b) {
        if(a > b)
            a = a - b;
        else 
            b = b - a;
    }
    p = p / a;  // p / CMMDC(a,b)
    cout << p;
}

Pentru a calcula numărul de divizori ai unui număr, putem folosi o metodă directă:

long nr_div(long a) {
    long nr = 0;
    for(long i = 1; i <= a; i++)
        if(a % i == 0)
            nr++;
    return nr;
}

Un algoritm mai eficient pentru numere mari este calculul numărului de divizori folosind descompunerea în factori primi:

void nr_div(long a, long &nr) {
    nr = 1;
    int p = 0, d = 2;
    while(a != 1) {
        if(a % d == 0) {
            p = 0;
            while(a % d == 0) {
                p++;
                a = a / d;
            }
            nr = nr * (p + 1);
        }
        d++;
        if(d * d > a)
            d = a;
    }
}

Suma divizorilor primi ai unui număr se poate calcula astfel:

int suma_div(int n) {
    int d = 2;
    int s = 0;
    while(n != 1) {
        if(n % d == 0) {
            s = s + d;
            while(n % d == 0)
                n = n / d;
        }
        d++;
        if(d * d > n)
            d = n;
    }
    return s;
}

💡 Optimizare: Condiția ifdd>nd * d > n este o optimizare importantă pentru algoritmi care lucrează cu factori primi. Aceasta îți permite să sari direct la ultimul factor prim dacă acesta există.

Algoritmi fundamentali

1.returnare

2.afisare

#include<iostream>
using namespace std;
int n;
int suma_cif(int x){
int S;
S=0;
While(x>0){

Descompuneri, verificări și șiruri speciale

Descompunerea în factori primi este fundamentală în teoria numerelor:

void desc(int n) {
    int p, i;
    for(i = 2; i <= n; i++) {
        if(n % i == 0) {
            p = 0;
            while(n % i == 0) {
                n = n / i;
                p++;
            }
            cout << i << "^" << p << endl;
        }
    }
}

Pentru verificarea unui număr prim, folosim definiția: un număr este prim dacă are exact 2 divizori (1 și el însuși):

long nrprim(long n) {
    long nr = 0, i;
    for(i = 1; i <= n; i++)
        if(n % i == 0)
            nr++;
    if(nr == 2 && n >= 2)
        return 1;
    else
        return 0;
}

O metodă eficientă pentru a afișa factorii primi cu putere pară ai unui număr:

void fac_primi(long n) {
    long p = 0, i;
    for(i = 2; i <= n; i++) {
        p = 0;
        while(n % i == 0) {
            n = n / i;
            p++;
        }
        if(p % 2 == 0 && p > 0)
            cout << i << endl;
    }
}

Generarea șirului Fibonacci este un algoritm clasic și util:

void fib(long n) {
    long a = 1, b = 1, c;
    cout << a << " " << b << " ";
    for(int i = 3; i <= n; i++) {
        c = a + b;
        cout << c << " ";
        a = b;
        b = c;
    }
}

💡 Aplicații practice: Algoritmii de verificare a primalității și descompunerile în factori primi sunt esențiali în criptografie și securitatea informatică. Șirul Fibonacci apare în numeroase fenomene naturale și probleme de optimizare!

Algoritmi fundamentali

1.returnare

2.afisare

#include<iostream>
using namespace std;
int n;
int suma_cif(int x){
int S;
S=0;
While(x>0){

Tehnici avansate și implementări alternative

Când lucrezi cu funcții în C++, există trei moduri principale de a returna valori:

  1. Prin returnare directă - folosind return:
int suma_cif(int x) {
    // calcul...
    return S;
}
  1. Prin afișare - funcția afișează direct rezultatul:
void suma_cif(int x) {
    // calcul...
    cout << S;
}
  1. Prin parametru de ieșire - folosind referințe (&):
void suma_cif(int x, int &S) {
    S = 0;
    // calcul...
}

Optimizarea algoritmilor este esențială pentru eficiență. De exemplu, pentru verificarea primalității, o versiune optimizată ar fi:

bool estePrim(long n) {
    if(n < 2) return false;
    if(n == 2) return true;
    if(n % 2 == 0) return false;
    
    for(long i = 3; i*i <= n; i += 2)
        if(n % i == 0)
            return false;
    return true;
}

Când implementezi algoritmi recursivi, fii atent la condițiile de bază. De exemplu, Fibonacci recursiv:

long fibonacci(long n) {
    if(n <= 2) return 1;
    return fibonacci(n-1) + fibonacci(n-2);
}

💡 Sfat de optimizare: Recursivitatea este elegantă, dar poate duce la probleme de performanță pentru valori mari. Pentru algoritmi precum Fibonacci, implementările iterative sunt de obicei mai eficiente.

Experimentează cu acești algoritmi fundamentali - ei formează baza pentru rezolvarea problemelor mai complexe în informatică!



Credeam că nu vei întreba niciodată...

Ce este Companionul AI Knowunity?

Companionul nostru AI este creat special pentru nevoile studenților. Bazându-ne pe milioanele de materiale de pe platformă, putem oferi răspunsuri exacte și relevante pentru studenți. Dar nu este vorba doar despre răspunsuri, companionul este mai ales despre ghidarea studenților prin provocările zilnice de învățare, cu planuri de studiu personalizate, chestionare sau conținuturi în chat și personalizare 100% bazată pe abilitățile și evoluțiile studenților.

De unde pot descărca aplicația Knowunity?

Aplicația este disponibilă în Google Play Store și Apple App Store.

Este Knowunity chiar gratuită?

Da! Bucură-te de access la materiale de studiu, conectează-te cu alți elevi, și primește ajutor instant - toate acestea la un click distanță. În plus, câștigă puncte ca să deblochezi mai multe funcționalități!

Nu găsești ce cauți? Explorează alte MATERII.

Recenzii de la utilizatorii noștri. Ei iubesc să folosească Knowunity — și tu o vei face.

4.9/5

App Store

4.8/5

Google Play

Aplicația este foarte ușor de utilizat și bine concepută. Am găsit tot ce căutam până acum și am reușit să învăț multe din prezentări! Cu siguranță voi folosi aplicația pentru o temă la clasă! Și desigur, ajută mult ca sursă de inspirație.

Ștefan S

utilizator iOS

Această aplicație este super. Sunt atât de multe materiale de studiu și ajutor pentru elevi [...]. Materia mea mai problematică este franceza, de exemplu, și aplicația oferă foarte multe materiale ajutătoare. Mulțumită acestei aplicații, mi-am îmbunătățit franceza. Aș recomanda-o oricui.

Samantha Klich

utilizator Android

Wow, sunt cu adevărat impresionat. Am încercat aplicația pentru că am văzut-o promovată de multe ori și am rămas uimit. Aceasta este AJUTORUL de care ai nevoie pentru școală și, mai presus de toate, oferă atât de multe lucruri, precum exerciții și fișe de informații, care mi-au fost FOARTE de ajutor.

Anna

utilizator iOS

Te ajută să înveți foarte repede și ști foarte bine ce ai dori tu să înveți, vă recomand cu drag să încercați și să învățați mai repede.!

Thomas R

utilizator iOS

Foarte bună aplicația!!!! Mă ajută să înțeleg mult mai bine lecțiile și temele le termin mult mai repede.👍❤️

Paul P

utilizator Android

Te ajută foarte bine la teme acest robot,recomand!

David K

utilizator iOS

Aplicația e grozavă! Tot ce trebuie să fac este să introduc subiectul în bara de căutare și primesc răspunsul foarte rapid. Nu mai trebuie să mă uit la 10 videoclipuri pe YouTube pentru a înțelege ceva, deci îmi economisesc timpul. Super recomandat!

Sudenaz Ocak

utilizator Android

La școală eram chiar slab la matematică, dar datorită aplicației, mă descurc mai bine acum. Sunt atât de recunoscător că ai creat aplicația.

Greenlight Bonnie

utilizator Android

Această aplicație e super interesantă și seamănă ca tiktok-ul doar că tu ai doar teorie și explicații.

Karla S

utilizator Android

Nu mai trebuie să stau cu orele să învăț după caiet când pot să citesc de 2 ori lecțiile care apar aici și iau 10 la test ! Knowunity m-a ajutat să iau nota 9,20 la română ! Voi recomanda ff tare aceasta aplicate , să nu uităm ca are și chat GPT !👍🏻

Denisa B

utilizator iOS

m-a ajutat foarte mult să înțeleg anumite exerciții la diferite materii , mă ajută foarte mult la teme , explicându-mi pas cu pas tot , o aplicație excelentă !! RECOMAND !

Sarah L

utilizator Android

Este foarte bună te ajută la teme te face să înțelegi lecțiile am înțeles o lecție în 20 de minute i singură nu reușeam să o învăț dar cu Knowunity am învățat-o foarte ușor

Alessia V

utilizator iOS

Aplicația este foarte ușor de utilizat și bine concepută. Am găsit tot ce căutam până acum și am reușit să învăț multe din prezentări! Cu siguranță voi folosi aplicația pentru o temă la clasă! Și desigur, ajută mult ca sursă de inspirație.

Ștefan S

utilizator iOS

Această aplicație este super. Sunt atât de multe materiale de studiu și ajutor pentru elevi [...]. Materia mea mai problematică este franceza, de exemplu, și aplicația oferă foarte multe materiale ajutătoare. Mulțumită acestei aplicații, mi-am îmbunătățit franceza. Aș recomanda-o oricui.

Samantha Klich

utilizator Android

Wow, sunt cu adevărat impresionat. Am încercat aplicația pentru că am văzut-o promovată de multe ori și am rămas uimit. Aceasta este AJUTORUL de care ai nevoie pentru școală și, mai presus de toate, oferă atât de multe lucruri, precum exerciții și fișe de informații, care mi-au fost FOARTE de ajutor.

Anna

utilizator iOS

Te ajută să înveți foarte repede și ști foarte bine ce ai dori tu să înveți, vă recomand cu drag să încercați și să învățați mai repede.!

Thomas R

utilizator iOS

Foarte bună aplicația!!!! Mă ajută să înțeleg mult mai bine lecțiile și temele le termin mult mai repede.👍❤️

Paul P

utilizator Android

Te ajută foarte bine la teme acest robot,recomand!

David K

utilizator iOS

Aplicația e grozavă! Tot ce trebuie să fac este să introduc subiectul în bara de căutare și primesc răspunsul foarte rapid. Nu mai trebuie să mă uit la 10 videoclipuri pe YouTube pentru a înțelege ceva, deci îmi economisesc timpul. Super recomandat!

Sudenaz Ocak

utilizator Android

La școală eram chiar slab la matematică, dar datorită aplicației, mă descurc mai bine acum. Sunt atât de recunoscător că ai creat aplicația.

Greenlight Bonnie

utilizator Android

Această aplicație e super interesantă și seamănă ca tiktok-ul doar că tu ai doar teorie și explicații.

Karla S

utilizator Android

Nu mai trebuie să stau cu orele să învăț după caiet când pot să citesc de 2 ori lecțiile care apar aici și iau 10 la test ! Knowunity m-a ajutat să iau nota 9,20 la română ! Voi recomanda ff tare aceasta aplicate , să nu uităm ca are și chat GPT !👍🏻

Denisa B

utilizator iOS

m-a ajutat foarte mult să înțeleg anumite exerciții la diferite materii , mă ajută foarte mult la teme , explicându-mi pas cu pas tot , o aplicație excelentă !! RECOMAND !

Sarah L

utilizator Android

Este foarte bună te ajută la teme te face să înțelegi lecțiile am înțeles o lecție în 20 de minute i singură nu reușeam să o învăț dar cu Knowunity am învățat-o foarte ușor

Alessia V

utilizator iOS

 

Informatică și TIC

70

24 nov. 2025

6 pagini

Algoritmi Fundamentali pentru Clasa a XI-a

I

Ioana Cuciurean

@ioanacuciurean

Iată un ghid concis despre algoritmi fundamentali în C++. Vei învăța cum să implementezi diverse funcții pentru manipularea numerelor: calcularea sumelor, verificarea proprietăților și algoritmi de bază pe care îi vei folosi frecvent în problemele de informatică.

Algoritmi fundamentali

1.returnare

2.afisare

#include<iostream>
using namespace std;
int n;
int suma_cif(int x){
int S;
S=0;
While(x>0){

Înscrie-te pentru a vedea CONȚINUTULE gratuit!

Acces la toate documentele

Îmbunătățește notele tale!

Alătură-te milioanelor de elevi

Prin înregistrare, accepți Termenii de serviciu și Politica de confidențialitate

Algoritmi fundamentali de bază

Să începem cu funcții care procesează cifrele unui număr. Aceste funcții sunt esențiale pentru rezolvarea multor probleme de algoritmi.

Funcția suma_cif() calculează suma cifrelor unui număr. Aceasta folosește operația %10 pentru a extrage ultima cifră și /10 pentru a elimina cifra respectivă:

int suma_cif(int x) {
    int S = 0;
    while(x > 0) {
        S = S + x % 10;
        x = x / 10;
    }
    return S;
}

Funcția prod_cif_pare() calculează produsul cifrelor pare ale unui număr. Observă cum verificăm dacă cifra este pară cu condiția ifnn%10%2==0:

int prod_cif_pare(int n) {
    int p = 1;
    if(n == 0) p = 0;
    while(n > 0) {
        if(n%10%2 == 0)
            p = p*(n%10);
        n = n/10;
    }
    return p;
}

💡 Sfat util: Pentru a verifica dacă un număr este par, folosește operatorul modulo: numar % 2 == 0. Acest operator va fi esențial în multe algoritmi!

De asemenea, un algoritm fundamental este interschimbarea valorilor a două variabile. Pentru aceasta, avem nevoie de o variabilă auxiliară:

void interschimbare(int &x, int &y) {
    int aux;
    aux = x;
    x = y;
    y = aux;
}
Algoritmi fundamentali

1.returnare

2.afisare

#include<iostream>
using namespace std;
int n;
int suma_cif(int x){
int S;
S=0;
While(x>0){

Înscrie-te pentru a vedea CONȚINUTULE gratuit!

Acces la toate documentele

Îmbunătățește notele tale!

Alătură-te milioanelor de elevi

Prin înregistrare, accepți Termenii de serviciu și Politica de confidențialitate

Oglindirea unui număr și operații cu cifre

Când avem nevoie să inversăm cifrele unui număr, folosim algoritmul de oglindire. Este un algoritm util pentru verificarea palindroamelor sau pentru transformări numerice.

Iată algoritmul pentru a obține oglinditul unui număr:

long ogl_numar(long a) {
    long ogl = 0;
    while(a > 0) {
        ogl = ogl * 10 + (a % 10);
        a = a / 10;
    }
    return ogl;
}

Pentru a găsi cifra minimă dintr-un număr, parcurgem toate cifrele și păstrăm valoarea minimă întâlnită:

long cif_mini(long x) {
    long mini = x % 10;
    while(x > 0) {
        if((x % 10) < mini)
            mini = x % 10;
        x = x / 10;
    }
    return mini;
}

Un algoritm interesant este eliminarea cifrelor pare dintr-un număr. Construim un nou număr care conține doar cifrele impare din numărul original:

int eliminare(int n) {
    int p = 1, m = 0;
    while(n > 0) {
        if(n % 2 == 1) {  // dacă ultima cifră e impară
            m = m + (n % 10) * p;
            p = p * 10;
        }
        n = n / 10;
    }
    return m;
}

💡 Reține: Când construiești un număr din cifre individuale, folosești formula numar = numar * 10 + cifra pentru a adăuga cifre la dreapta, sau numar = cifra * putere + numar cuputere=10,100,etc.cu putere = 10, 100, etc. pentru a adăuga la stânga.

Algoritmi fundamentali

1.returnare

2.afisare

#include<iostream>
using namespace std;
int n;
int suma_cif(int x){
int S;
S=0;
While(x>0){

Înscrie-te pentru a vedea CONȚINUTULE gratuit!

Acces la toate documentele

Îmbunătățește notele tale!

Alătură-te milioanelor de elevi

Prin înregistrare, accepți Termenii de serviciu și Politica de confidențialitate

Transformări numerice și algoritmi matematici

Dublarea cifrelor pare este un algoritm util care construiește un nou număr dublând apariția cifrelor pare din numărul original:

long dublare(long n) {
    long p = 1;
    long nr = 0;
    while(n > 0) {
        if(n % 10 % 2 == 0) {  // dacă cifra e pară
            nr = nr + (n % 10) * p;
            p = p * 10;
        }
        nr = nr + (n % 10) * p;
        p = p * 10;
        n = n / 10;
    }
    return nr;
}

Conversia unui număr în baza 2 (binar) este un algoritm fundamental în informatică:

long baza2(long n) {
    long p = 1, nr = 0;
    while(n != 0) {
        nr = nr + (n % 2) * p;
        p = p * 10;
        n = n / 2;
    }
    return nr;
}

Calculul celui mai mare divizor comun (CMMDC) folosind algoritmul lui Euclid poate fi implementat în două moduri:

  1. Prin scăderi repetate:
void cmmdc(int a, int b) {
    while(a != b) {
        if(a > b)
            a = a - b;
        else 
            b = b - a;
    }
    cout << a;  // a este CMMDC-ul
}
  1. Prin împărțiri repetate (mai eficient):
long cmmdc(long a, long b) {
    long r;
    while(b != 0) {
        r = a % b;
        a = b;
        b = r;
    }
    return a;
}

💡 Important: Metoda cu împărțiri repetate este mult mai eficientă decât cea cu scăderi, mai ales pentru numere mari. Încearcă să o folosești de fiecare dată când calculezi CMMDC!

Algoritmi fundamentali

1.returnare

2.afisare

#include<iostream>
using namespace std;
int n;
int suma_cif(int x){
int S;
S=0;
While(x>0){

Înscrie-te pentru a vedea CONȚINUTULE gratuit!

Acces la toate documentele

Îmbunătățește notele tale!

Alătură-te milioanelor de elevi

Prin înregistrare, accepți Termenii de serviciu și Politica de confidențialitate

Calculul CMMMC și algoritmi pentru divizori

Cel mai mic multiplu comun (CMMMC) poate fi calculat folosind relația cu CMMDC:

void cmmmc(long a, long b) {
    long p = a * b;
    while(a != b) {
        if(a > b)
            a = a - b;
        else 
            b = b - a;
    }
    p = p / a;  // p / CMMDC(a,b)
    cout << p;
}

Pentru a calcula numărul de divizori ai unui număr, putem folosi o metodă directă:

long nr_div(long a) {
    long nr = 0;
    for(long i = 1; i <= a; i++)
        if(a % i == 0)
            nr++;
    return nr;
}

Un algoritm mai eficient pentru numere mari este calculul numărului de divizori folosind descompunerea în factori primi:

void nr_div(long a, long &nr) {
    nr = 1;
    int p = 0, d = 2;
    while(a != 1) {
        if(a % d == 0) {
            p = 0;
            while(a % d == 0) {
                p++;
                a = a / d;
            }
            nr = nr * (p + 1);
        }
        d++;
        if(d * d > a)
            d = a;
    }
}

Suma divizorilor primi ai unui număr se poate calcula astfel:

int suma_div(int n) {
    int d = 2;
    int s = 0;
    while(n != 1) {
        if(n % d == 0) {
            s = s + d;
            while(n % d == 0)
                n = n / d;
        }
        d++;
        if(d * d > n)
            d = n;
    }
    return s;
}

💡 Optimizare: Condiția ifdd>nd * d > n este o optimizare importantă pentru algoritmi care lucrează cu factori primi. Aceasta îți permite să sari direct la ultimul factor prim dacă acesta există.

Algoritmi fundamentali

1.returnare

2.afisare

#include<iostream>
using namespace std;
int n;
int suma_cif(int x){
int S;
S=0;
While(x>0){

Înscrie-te pentru a vedea CONȚINUTULE gratuit!

Acces la toate documentele

Îmbunătățește notele tale!

Alătură-te milioanelor de elevi

Prin înregistrare, accepți Termenii de serviciu și Politica de confidențialitate

Descompuneri, verificări și șiruri speciale

Descompunerea în factori primi este fundamentală în teoria numerelor:

void desc(int n) {
    int p, i;
    for(i = 2; i <= n; i++) {
        if(n % i == 0) {
            p = 0;
            while(n % i == 0) {
                n = n / i;
                p++;
            }
            cout << i << "^" << p << endl;
        }
    }
}

Pentru verificarea unui număr prim, folosim definiția: un număr este prim dacă are exact 2 divizori (1 și el însuși):

long nrprim(long n) {
    long nr = 0, i;
    for(i = 1; i <= n; i++)
        if(n % i == 0)
            nr++;
    if(nr == 2 && n >= 2)
        return 1;
    else
        return 0;
}

O metodă eficientă pentru a afișa factorii primi cu putere pară ai unui număr:

void fac_primi(long n) {
    long p = 0, i;
    for(i = 2; i <= n; i++) {
        p = 0;
        while(n % i == 0) {
            n = n / i;
            p++;
        }
        if(p % 2 == 0 && p > 0)
            cout << i << endl;
    }
}

Generarea șirului Fibonacci este un algoritm clasic și util:

void fib(long n) {
    long a = 1, b = 1, c;
    cout << a << " " << b << " ";
    for(int i = 3; i <= n; i++) {
        c = a + b;
        cout << c << " ";
        a = b;
        b = c;
    }
}

💡 Aplicații practice: Algoritmii de verificare a primalității și descompunerile în factori primi sunt esențiali în criptografie și securitatea informatică. Șirul Fibonacci apare în numeroase fenomene naturale și probleme de optimizare!

Algoritmi fundamentali

1.returnare

2.afisare

#include<iostream>
using namespace std;
int n;
int suma_cif(int x){
int S;
S=0;
While(x>0){

Înscrie-te pentru a vedea CONȚINUTULE gratuit!

Acces la toate documentele

Îmbunătățește notele tale!

Alătură-te milioanelor de elevi

Prin înregistrare, accepți Termenii de serviciu și Politica de confidențialitate

Tehnici avansate și implementări alternative

Când lucrezi cu funcții în C++, există trei moduri principale de a returna valori:

  1. Prin returnare directă - folosind return:
int suma_cif(int x) {
    // calcul...
    return S;
}
  1. Prin afișare - funcția afișează direct rezultatul:
void suma_cif(int x) {
    // calcul...
    cout << S;
}
  1. Prin parametru de ieșire - folosind referințe (&):
void suma_cif(int x, int &S) {
    S = 0;
    // calcul...
}

Optimizarea algoritmilor este esențială pentru eficiență. De exemplu, pentru verificarea primalității, o versiune optimizată ar fi:

bool estePrim(long n) {
    if(n < 2) return false;
    if(n == 2) return true;
    if(n % 2 == 0) return false;
    
    for(long i = 3; i*i <= n; i += 2)
        if(n % i == 0)
            return false;
    return true;
}

Când implementezi algoritmi recursivi, fii atent la condițiile de bază. De exemplu, Fibonacci recursiv:

long fibonacci(long n) {
    if(n <= 2) return 1;
    return fibonacci(n-1) + fibonacci(n-2);
}

💡 Sfat de optimizare: Recursivitatea este elegantă, dar poate duce la probleme de performanță pentru valori mari. Pentru algoritmi precum Fibonacci, implementările iterative sunt de obicei mai eficiente.

Experimentează cu acești algoritmi fundamentali - ei formează baza pentru rezolvarea problemelor mai complexe în informatică!

Credeam că nu vei întreba niciodată...

Ce este Companionul AI Knowunity?

Companionul nostru AI este creat special pentru nevoile studenților. Bazându-ne pe milioanele de materiale de pe platformă, putem oferi răspunsuri exacte și relevante pentru studenți. Dar nu este vorba doar despre răspunsuri, companionul este mai ales despre ghidarea studenților prin provocările zilnice de învățare, cu planuri de studiu personalizate, chestionare sau conținuturi în chat și personalizare 100% bazată pe abilitățile și evoluțiile studenților.

De unde pot descărca aplicația Knowunity?

Aplicația este disponibilă în Google Play Store și Apple App Store.

Este Knowunity chiar gratuită?

Da! Bucură-te de access la materiale de studiu, conectează-te cu alți elevi, și primește ajutor instant - toate acestea la un click distanță. În plus, câștigă puncte ca să deblochezi mai multe funcționalități!

2

Instrumente inteligente NOU

Transformă această notiță în: ✓ 50+ întrebări de exersare ✓ Flashcard-uri interactive ✓ Simulare completă ✓ Planuri de eseu

Simulare
Quiz
Flashcard-uri
Eseu

Nu găsești ce cauți? Explorează alte MATERII.

Recenzii de la utilizatorii noștri. Ei iubesc să folosească Knowunity — și tu o vei face.

4.9/5

App Store

4.8/5

Google Play

Aplicația este foarte ușor de utilizat și bine concepută. Am găsit tot ce căutam până acum și am reușit să învăț multe din prezentări! Cu siguranță voi folosi aplicația pentru o temă la clasă! Și desigur, ajută mult ca sursă de inspirație.

Ștefan S

utilizator iOS

Această aplicație este super. Sunt atât de multe materiale de studiu și ajutor pentru elevi [...]. Materia mea mai problematică este franceza, de exemplu, și aplicația oferă foarte multe materiale ajutătoare. Mulțumită acestei aplicații, mi-am îmbunătățit franceza. Aș recomanda-o oricui.

Samantha Klich

utilizator Android

Wow, sunt cu adevărat impresionat. Am încercat aplicația pentru că am văzut-o promovată de multe ori și am rămas uimit. Aceasta este AJUTORUL de care ai nevoie pentru școală și, mai presus de toate, oferă atât de multe lucruri, precum exerciții și fișe de informații, care mi-au fost FOARTE de ajutor.

Anna

utilizator iOS

Te ajută să înveți foarte repede și ști foarte bine ce ai dori tu să înveți, vă recomand cu drag să încercați și să învățați mai repede.!

Thomas R

utilizator iOS

Foarte bună aplicația!!!! Mă ajută să înțeleg mult mai bine lecțiile și temele le termin mult mai repede.👍❤️

Paul P

utilizator Android

Te ajută foarte bine la teme acest robot,recomand!

David K

utilizator iOS

Aplicația e grozavă! Tot ce trebuie să fac este să introduc subiectul în bara de căutare și primesc răspunsul foarte rapid. Nu mai trebuie să mă uit la 10 videoclipuri pe YouTube pentru a înțelege ceva, deci îmi economisesc timpul. Super recomandat!

Sudenaz Ocak

utilizator Android

La școală eram chiar slab la matematică, dar datorită aplicației, mă descurc mai bine acum. Sunt atât de recunoscător că ai creat aplicația.

Greenlight Bonnie

utilizator Android

Această aplicație e super interesantă și seamănă ca tiktok-ul doar că tu ai doar teorie și explicații.

Karla S

utilizator Android

Nu mai trebuie să stau cu orele să învăț după caiet când pot să citesc de 2 ori lecțiile care apar aici și iau 10 la test ! Knowunity m-a ajutat să iau nota 9,20 la română ! Voi recomanda ff tare aceasta aplicate , să nu uităm ca are și chat GPT !👍🏻

Denisa B

utilizator iOS

m-a ajutat foarte mult să înțeleg anumite exerciții la diferite materii , mă ajută foarte mult la teme , explicându-mi pas cu pas tot , o aplicație excelentă !! RECOMAND !

Sarah L

utilizator Android

Este foarte bună te ajută la teme te face să înțelegi lecțiile am înțeles o lecție în 20 de minute i singură nu reușeam să o învăț dar cu Knowunity am învățat-o foarte ușor

Alessia V

utilizator iOS

Aplicația este foarte ușor de utilizat și bine concepută. Am găsit tot ce căutam până acum și am reușit să învăț multe din prezentări! Cu siguranță voi folosi aplicația pentru o temă la clasă! Și desigur, ajută mult ca sursă de inspirație.

Ștefan S

utilizator iOS

Această aplicație este super. Sunt atât de multe materiale de studiu și ajutor pentru elevi [...]. Materia mea mai problematică este franceza, de exemplu, și aplicația oferă foarte multe materiale ajutătoare. Mulțumită acestei aplicații, mi-am îmbunătățit franceza. Aș recomanda-o oricui.

Samantha Klich

utilizator Android

Wow, sunt cu adevărat impresionat. Am încercat aplicația pentru că am văzut-o promovată de multe ori și am rămas uimit. Aceasta este AJUTORUL de care ai nevoie pentru școală și, mai presus de toate, oferă atât de multe lucruri, precum exerciții și fișe de informații, care mi-au fost FOARTE de ajutor.

Anna

utilizator iOS

Te ajută să înveți foarte repede și ști foarte bine ce ai dori tu să înveți, vă recomand cu drag să încercați și să învățați mai repede.!

Thomas R

utilizator iOS

Foarte bună aplicația!!!! Mă ajută să înțeleg mult mai bine lecțiile și temele le termin mult mai repede.👍❤️

Paul P

utilizator Android

Te ajută foarte bine la teme acest robot,recomand!

David K

utilizator iOS

Aplicația e grozavă! Tot ce trebuie să fac este să introduc subiectul în bara de căutare și primesc răspunsul foarte rapid. Nu mai trebuie să mă uit la 10 videoclipuri pe YouTube pentru a înțelege ceva, deci îmi economisesc timpul. Super recomandat!

Sudenaz Ocak

utilizator Android

La școală eram chiar slab la matematică, dar datorită aplicației, mă descurc mai bine acum. Sunt atât de recunoscător că ai creat aplicația.

Greenlight Bonnie

utilizator Android

Această aplicație e super interesantă și seamănă ca tiktok-ul doar că tu ai doar teorie și explicații.

Karla S

utilizator Android

Nu mai trebuie să stau cu orele să învăț după caiet când pot să citesc de 2 ori lecțiile care apar aici și iau 10 la test ! Knowunity m-a ajutat să iau nota 9,20 la română ! Voi recomanda ff tare aceasta aplicate , să nu uităm ca are și chat GPT !👍🏻

Denisa B

utilizator iOS

m-a ajutat foarte mult să înțeleg anumite exerciții la diferite materii , mă ajută foarte mult la teme , explicându-mi pas cu pas tot , o aplicație excelentă !! RECOMAND !

Sarah L

utilizator Android

Este foarte bună te ajută la teme te face să înțelegi lecțiile am înțeles o lecție în 20 de minute i singură nu reușeam să o învăț dar cu Knowunity am învățat-o foarte ușor

Alessia V

utilizator iOS