Rezolvare completă PbInfo #62 Factorizare

Cerinţa

Se citeşte un număr natural n. Să se afişeze descompunerea în factori primi a lui n.

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieşire

Programul afișează pe ecran perechile b p, reprezentând factorii primi şi puterile corespunzătoare.

Perechile se afişează câte una pe o linie a ecranului, în ordinea crescătoare a bazelor. Cele două valori din pereche sunt separate printr-un spaţiu.

Restricţii şi precizări

  • 1 < n < 2.100.000.000

Exemplu

Intrare

135

Ieșire

3 3
5 1

Explicație

135 = 33 * 51.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Factorizare:

#include <iostream>
using namespace std;

void factorizare(int n){
    
}

int main(){
    int n;
    cin >> n;
    int d = 2,  // d va fi, pe rand, fiecare factor prim din descompunere
        p;      // p va fi puterea lui d in descompunere
    // il  im partim pe n la d in mod repetat, pana cand devine 1
    while(n > 1)
    {
        // numaram de cate ori se imparte n la d. Aceasta va fi puterea lui d in descompunere
        p = 0;
        while(n % d == 0)
        {
            ++p;
            n /= d;
        }
        // daca s-a facut cel putin o impartire, afisam factorul si puterea
        if(p)
            cout << d << " " << p << endl;
        ++ d;
        
        //  daca d * d il depaseste pe n si n nu este 1, decidem ca n este prim,
        //  si este factor in descompunerea valorii initiale a lui n
        
        if(n>1 && d * d > n){
            cout << n << " 1" << endl;  //  vom afisa n la puterea 1
            n = 1;                      // alti divizori primi nu mai sunt.
                                        // oprim cautarea, dand lui n valoarea 1
        }
    }
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #62 Factorizare

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #62 Factorizare de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!