Description

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 p th power.
Sample Input
17 1073741824 25 0
Sample Output
1 30 2
#include <stdio.h> #include <math.h> typedef long long LL; LL POW(int b,int p) { int i; LL s=1; for(i=0; i< p; i++) s*=b; return s; } int main() { LL x,n; int i,y; while(scanf("%lld",&n)&&n) { x=n>0?n:-n; for(i=32; i>=2; i--) { y=(int)(pow((double)x,1.0/i)+0.5); if(POW(y,i)==x) { if(n<0 && i%2==0) continue; else printf("%d\n",i); break; } } if(i==1) printf("1\n"); } return 0; }