一道编程题。把一个数分解成质数的q次方

慕容天河 2017-03-07 09:40:26
题目如下:
一个正整数n(2<=n<=10^18).如果n可以分解成p^q,其中p为质数且q为大于1的整数,则输出p,q。否则输出NO
例如:
输入 27
输出 3 3

以下是我的源码:
import java.util.Scanner;

public class ArrayTest {
public static boolean isPrimer(int i){
if(i<2){
return false;
}else{
if(i==2||i==3)
return true;
for(int j=2;j<=Math.sqrt(i);j++){
if(i%j==0)
return false;
}
return true;
}
}
private static double sqrtn(double d, double i) {
i=1/i;

return Math.pow(d, i);
}

public static int sup(int i){
for(int j=2;j<=18;j++){
double ans = sqrtn(i,j);
int ians = (int)ans;
if(ans-ians==0){
if(isPrimer(ians)){
return j;
}
}
}
return -1;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
int q = sup(i);
if(q==-1){
System.out.println("NO");
}else{
int p = (int)sqrtn(i,q);
System.out.println(p+" "+q);
}
}
}

感觉没有错,输入了几组数据也是对的。为什么提交时候提示我测试用例仅通过10%...求大神告知哪里错了,哪些情况没有考虑到。感谢!
...全文
107 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,396

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧