SC-202004030939_20200828-潘旭

日志

问题:

​ 问题内容:题目:将一个正整数分解质因数。例如:输入90,打印出90=2 * 2 * 3 * 5。

        // 提示代码
        int count = 0;
        System.out.print(n+"=");
        for (int i = 2; i <= n; i++) {
            if(n%i==0) {  //质因数
                if(count==0)
                  System.out.print(i);
                else
                   System.out.print("*"+i);
                n = n/i;
                if(n>i) {
                   i--;
                }
                count++;
            }
        }//给的代码输入90可以打印出90 = 2 * 2 * 3 * 5,但是输入36只打印 36 = 2* 2 * 3 ,或者27只打印出27 = 3 * 3 ,输入8只打印处 8 = 2 * 2,这啥情况?   读了好几遍过程应该是对的。

​ 问题来源:做题时遇到的的

​ 解决问题:


          int count = 0;
            System.out.print(n+"=");
            for (int i = 2; i <= n; i++) {
                if(n%i==0) {  //质因数
                    if(count==0)
                      System.out.print(i);
                    else
                       System.out.print("*"+i);
                    n = n/i;
                    
                    if(n>=i) { // 结果对比了这几个数字才发现问题出在这  36, 27 , 8 的后两个质因数都是相等的,所以这的判
                       i--;    // 断应该是>=。
                    }
                    count++;
                }
            }
            
            
            // 我发现 用while 循环好像更简便一点。
            int x =2;
            while( x <= n) {
                if(x == n) {                
                    System.out.print(n);
                    break;
                }
                if(n%k == 0) {
                    System.out.print(x+"*");
                    n = n/x;
                }
                else {
                    x++;
                }
            }
            

吐槽:

​ 吐槽自己观察能力太差,总是get不到问题的关键。

标签


© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1