echo -e '#include <iostream>\n#include <map>\n#define PRIME_SIZE 65536\nusing namespace std;bool primes[PRIME_SIZE];void generatePrimes(){for(int i=2;i<PRIME_SIZE;++i)primes[i]=true;primes[0]=primes[1]=false;for(int n=2;n<PRIME_SIZE;++n){if(!primes[n])continue;for(int i=2;n*i<PRIME_SIZE;++i)primes[n*i]=false;}}bool isPrime(unsigned int n){if(n<PRIME_SIZE)return primes[n];for(unsigned int i=2;i<PRIME_SIZE;++i)if(n%i==0)return false;return true;}map<unsigned int,unsigned int>getPrimes(unsigned int n){map<unsigned int,unsigned int>primes;while(n>1){if(isPrime(n)){++primes[n];n=1;}else{for(unsigned int i=2;i<n;++i){if(!isPrime(i))continue;if(n%i)continue;++primes[i];n/=i;break;}}}return primes;}void printPrimes(unsigned int n){map<unsigned int,unsigned int>primes=getPrimes(n);cout«n«" = 1";for(map<unsigned int,unsigned int>::iterator p=primes.begin();p!=primes.end();++p){cout«" * "«p->first;if(p->second>1)cout«"^"«p->second;}cout«endl;}int main(){generatePrimes();for(unsigned int n=4294967280;n>0;++n)printPrimes(n);return 0;}'>a.cpp&&g++ a.cpp&&./a.out