#include <list>
#include <iostream>

using namespace std ;


class factor {
public:
         factor() : value (0), expon(0) {};
         factor(int vl, int exp) : value(vl), expon(exp) {};
         operator==(int val);

         int value;
         int expon;
};

int factor::operator==(int val) {
         if (value == val) return (1);
         else return (0);
}

int factorize(int number)       {


list <factor> l1;
list <factor>::iterator l1_Iter;
factor f;

int i=2;

while(1)        {
         if (!(number%i)) {
                 if (!l1.empty() && (l1.back()).value == i)
                         l1.back().expon++;
                 else
                         l1.push_back(factor(i,1));
                 number /= i;
         }
         else i++;
         if (number == 1 || i > number) break;
}

// Display the factorization
cout << "\ntest:";
     for (l1_Iter =  l1.begin(); l1_Iter != l1.end(); ++l1_Iter)
         cout << " " << l1_Iter->value << "(" << l1_Iter->expon << ")";

     cout << "\n";
         cout.flush();



         return (1);
}

