用例通过率是40%是怎么回事啊?
如果一个数字能表示为p^q(^表示幂运算)且p为一个素数,q为大于1的正整数就称这个数叫做超级素数幂。现在给出一个正整数n,如果n是一个超级素数幂需要找出对应的p,q。
输入描述:
输入一个正整数n(2 ≤ n ≤ 10^18)
输出描述:
如果n是一个超级素数幂则输出p,q,以空格分隔,行末无空格。 如果n不是超级素数幂,则输出No
这是题目要求
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int n=typein();
if (n<2 || n>Math.pow(10, 18)) {
System.out.println("请重新输入");
n = typein();
}
int sqrt=(int)(Math.sqrt(n));
ArrayList<Integer> arrayList =new
ArrayList<>();
for (int i = 2; i <= sqrt; i++) {
if (i==2) {
arrayList.add(i);
continue;
}
int j=0;
for (j = 2; j <i; j++) {
if (i%j==0) {
break;
}
}
if (j==i) {
arrayList.add(i);
}
}
boolean b=false;
for(int i=0;i<arrayList.size();i++){
int a=arrayList.get(i);
double e=(Math.log(n)/Math.log(a));
if ((e-(int)e) ==0.00) {
System.out.println(arrayList.get(i)+"
"+(int)e);
b=true;
}
}
if (!b) {
System.out.println("No");
}
}
static int typein(){
Scanner reader = new Scanner(System.in);
int n=reader.nextInt();
return n;
}
}
这是我的代码,有什么问题啊,我怎么样才能知道没有通过的用例都有哪些???