#include #include #include using namespace std; template string str( const vector& v ) { stringstream ss; for ( int i = 0; i < (int)v.size(); i++ ) ss << (i?",":"") << v[i]; return "{" + ss.str() + "}"; } void getPrimeFactorsSig( __int64 x, vector& v ) { v.clear(); for ( __int64 i = 2; i*i <= x; i++ ) { int power = 0; while ( x % i == 0 ) x /= i, ++power; if ( power ) v.push_back( power ); } if ( x != 1 ) v.push_back( 1 ); sort( v.begin(), v.end() ); } vector getPrimeFactorsSig( __int64 x ) { vector v; getPrimeFactorsSig( x, v ); return v; } void main() { __int64 K = 1000000000LL; for ( __int64 i = K + 0; i < K + 4000; i++ ) { vector a = getPrimeFactorsSig( i ); vector b = getPrimeFactorsSig( i+1 ); if ( a == b ) { cout << i << " " << str(a) << endl; } } }