#include <iostream>
using namespace std;
//se declara variabilele n,d,p de tip intreg
//variabila n memoreaza numarul citit de la tastatura
//variabila d este folosita pentru a identifica daca n are divizori proprii
//variabila p memoreaza puterea la care apare un factor prim
int n,d,p;
int main()
{
//se citeste de la tastatura numarul n
cout<<"Introduceti numarul n: ";
cin>>n;
//variabila d este initializata cu 2 (primul posibil divizor propriu)
d=2;
//se determina daca numarul n are divizori proprii
while(n>1)
    {
        p=0;//p este initializat cu 0, pentru ca de fiecare data cand se reia instructiunea while sa se poata determina puterea la care apare factorul prim
        //se verifica daca numarul n se imparte de mai multe ori la numarul d
        while(n%d==0)
        {
            p++; //se contorizeaza puterea la care apare factorul prim in descompunere
            n=n/d; //se imparte n la d pentru a se putea continua impartirea si identificarea puterii
        }
        //daca numarul d se imparte macar o data la n se afiseaza d, alaturi de puterea la care apare in descompunere
        //daca p este 0 inseamna ca numarul d nu se imparte deloc la n
        if(p>0)
            cout<<d<<"^"<<p<<" ";
        d=d+1; //creste d, pentru a putea identifica si alti factori primi ai descompunerii
    }
}