// File Name: uva10892.cpp // Author: bo_jwolf // Created Time: 2013年09月16日 星期一 22:32:26 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; vector Q ; long long n ; long long gcd( long long a , long long b ) { return b == 0 a : gcd( b , a % b ) ; } long long lcm( long long a , long long b ) { return ( 1LL*a * b ) / gcd( a , b ) ; } int main() { while( scanf( "%lld" , &n ) != EOF ) { if( n == 0 ) break ; Q.clear() ; for( long long i = 1 ; i <= sqrt( n ) ; ++i ) { if( n % i == 0 ) { if( n / i != i ) { Q.push_back( n / i ) ; Q.push_back( i ) ; } else { Q.push_back( i ) ; } } } long long len = Q.size() ; long long ans = 1 ; for( long long i = 0 ; i < len ; ++i ) { for( long long j = i + 1 ; j < len ; ++j ) { if( lcm( Q[ i ] , Q[ j ] ) == n ) ans++ ; } } printf( "%lld %lld\n" , n , ans ) ; } return 0; }