如果一个数字能表示为p^q(^表示幂运算)且p为一个素数,q为大于1的正整数就称这个数叫做超级素数幂。现在给出一个正整数n,如果n是一个超级素数幂需要找出对应的p,q。
输入描述:
输入一个正整数n(2 ≤ n ≤ 10^18)
输出描述:
如果n是一个超级素数幂则输出p,q,以空格分隔,行末无空格。 如果n不是超级素数幂,则输出No
输入例子:
27
输出例子:
3 3
package abc;
import java.util.Scanner;
public class test3 {
public static void main(String args[]){
Scanner x=new Scanner(System.in);
long n=x.nextLong();
boolean boole = false;
int end = (int) Math.sqrt(n);
for(int i = 2;i<=end;i++){
double bb = sqrt(n,i);
if(bb ==(int)bb&&isSu((int)bb)){
System.out.println((int)bb+" "+i);
break;
}
if(i==end){
System.out.println("No");
break;
}
}
}
public static double sqrt (double n,double i ){ //对n开 i次方
i = 1/i;
return Math.pow(n, i);
}
public static boolean isSu(int n){ //判断为素数
boolean boole = true;
for(int j = 2;j<=9;j++){
if(n==j){
continue;
}
if(n%j==0||n<2){
boole = false;
break;
}
}
return boole;
}
}