wkx_java
Kennan Wang
2016-12-05 01:32
采纳率: 6.7%
浏览 1.1k
已采纳

正整数分解质因数的程序

用这个程序感觉没错啊,输入数据后没反应怎么回事?
public class Decomposition {
public static void main(String[] args) {
String str="";
int j;
System.out.println("请输入一个正整数:");
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
int k=sc.nextInt();
for(j=2;j<=i;j++){
if(i%j==0){
str=str+j+"*";
i=i/j;
j--;
}
}
str=str+j;
sc.close();
System.out.println("分解结果是:"+k+"="+str);
}

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • u013181058
    圣-雄霸天下 2016-12-05 02:05
    已采纳
     int k = sc.nextInt();
     改成
     int k=i;
    
     for循环中的内容改成:
     if(i%j == 0){
         str += j;
         if(j<i){
            str += "*";
         }
         i = i/j;
         j--;
     }
    
    点赞 评论
  • Book1346
    Book1346 2016-12-05 01:54
    //这句我实在看不懂,直接k=i赋值语句就可以了,重新再控制台再输一遍是什么鬼?
    int k=sc.nextInt();//改成int k = j;
    //还有这里又是什么鬼?是i吧?
    //而且最好还要加个判断if(i != 1){str = str + i}
    str = str + j;
    
    点赞 评论
  • u012470804
    飞翔的小野鸭 2016-12-05 01:58

    int i=sc.nextInt();
    int k=sc.nextInt();

    如上正整数分解质因数不应该输入一个数字就可以跳出结果吗?
    为什么还要输入两次数字?

    点赞 评论
  • Book1346
    Book1346 2016-12-05 02:24
     //这句我实在看不懂,直接k=i赋值语句就可以了,重新再控制台再输一遍是什么鬼?
    int k=sc.nextInt();//改成int k = j;
    //还有这里又是什么鬼?是i吧?
    //而且最好还要加个判断if(i != 1){str = str + i}
    str = str + j;
    

    核心部分修改一下,输出部分逻辑改一下,比较符合实际,比较友好化

    for(j = 2;j <= i;j++)
    {
                if(i % j == 0)
                {
                    if(str.equals(""))
                    {
                        str = str + j;
                    }
                    else
                    {
                        str = str + "*" + j;
                    }
                    i = i / j;
                    j--;
                }
    }
            if(i != 1)
            {
                str = str + "*" + i;
            }
    
    点赞 评论

相关推荐