#include <iostream>
#include <map>
using namespace std;
map<int,int> factorFactor(int n)
{
map<int,int> M;
for(int m = 2; m <= n; ++m)
{
int d = m;
for(int i = 2; i*i <= d; ++i)
{
if (d%i) continue;
while(d%i == 0)
{
M[i]++;
d /= i;
}
}
if (d > 1) M[d]++;
}
return M;
}
int main(int argc, char * argv[])
{
auto m = factorFactor(10);
for(auto x: m)
{
cout << x.first << "^" << x.second << " ";
}
cout << "\n\n\n";
m = factorFactor(100);
for(auto x: m)
{
cout << x.first << "^" << x.second << " ";
}
cout << "\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCm1hcDxpbnQsaW50PiBmYWN0b3JGYWN0b3IoaW50IG4pCnsKICAgIG1hcDxpbnQsaW50PiBNOwogICAgZm9yKGludCBtID0gMjsgbSA8PSBuOyArK20pCiAgICB7CiAgICAgICAgaW50IGQgPSBtOwogICAgICAgIGZvcihpbnQgaSA9IDI7IGkqaSA8PSBkOyArK2kpCiAgICAgICAgewogICAgICAgICAgICBpZiAoZCVpKSBjb250aW51ZTsKICAgICAgICAgICAgd2hpbGUoZCVpID09IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE1baV0rKzsKICAgICAgICAgICAgICAgIGQgLz0gaTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoZCA+IDEpIE1bZF0rKzsKICAgIH0KICAgIHJldHVybiBNOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqIGFyZ3ZbXSkKewogICAgYXV0byBtID0gZmFjdG9yRmFjdG9yKDEwKTsKICAgIGZvcihhdXRvIHg6IG0pCiAgICB7CiAgICAgICAgY291dCA8PCB4LmZpcnN0IDw8ICJeIiA8PCB4LnNlY29uZCA8PCAiICAiOwogICAgfQogICAgY291dCA8PCAiXG5cblxuIjsKICAgIAogICAgbSA9IGZhY3RvckZhY3RvcigxMDApOwogICAgZm9yKGF1dG8geDogbSkKICAgIHsKICAgICAgICBjb3V0IDw8IHguZmlyc3QgPDwgIl4iIDw8IHguc2Vjb25kIDw8ICIgICI7CiAgICB9CiAgICBjb3V0IDw8ICJcbiI7CiAgICAKfQo=