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 pth power.
Sample Input
17
1073741824
25
0
Sample Output
1 30 2#include<stdio.h> #include<math.h> int main() { double n,b; long x,y; int i; while(scanf("%lf",&n)!=EOF) { if(n==0) break; if(n>0) { for(i=32;i>=0;i--) { b=pow(n,1.0/i); x=b; //类型转换为long y=x+1; // if(b-x<=1e-12||y-b<=1e-12) { printf("%d\n",i); break; } } } if(n<0) { n=-n; //if n《0,先转化为正数先,然后i 只能为奇数,查找i。 for(i=31;i>=1;i-=2) { b=pow(n,1.0/i); x=b; //类型转换为long。 y=x+1; // if(b-x<=1e-12||y-b<=1e-12) { printf("%d\n",i); break; } } } } return 0; }