poj 1730 Perfect Pth Powers

Perfect Pth Powers
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 14097   Accepted: 3192

Description

We say that x is a perfect square if, for some integer b, x = b2. Similarly, x is a perfect cube if, for some integer b, x = b3. More generally, x is a perfect pth power if, for some integer b, x = bp. Given an integer x you are to determine the largest p such that x is a perfect pth power.

Input

Each test case is given by a line of input containing x. The value of x will have magnitude at least 2 and be within the range of a (32-bit) int in C, C++, and Java. A line containing 0 follows the last test case.

Output

For each test case, output a line giving the largest integer p such that x is a perfect pth power.

Sample Input

17
1073741824
25
0

Sample Output

1
30
View Code
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<set>
#include<map>
#include<cstring>
#include<vector>
using namespace std;
int prime[40000],cnt=0;
bool hash[200024];
int pow( int a, int b )
{
     int sum = 1;
     while( b-- )
         sum *= a;
    return sum;    
}
int main(  )
{
    int  num;
    while( scanf( "%d",&num ),num  )
    {  
        int i = 0,t=1;
        if( num < 0 ) t =-1;
        for( i = 31 ; i > 1 ; i -- )
        {
           int tmp=(int)( pow (num*1.0*t,1.0/i )+1.0e-5)*t;    
           if(pow(tmp,i)==num) break;    
        }
        printf( "%d\n",i );
    }
    //system( "pause" );
    return 0;
}

 

 

posted @ 2012-07-14 16:38  wutaoKeen  阅读(171)  评论(0编辑  收藏  举报