质数因子

题目描述

功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )

最后一个数后面也要有空格。
示例:
输入 180
输出 2 2 3 3 5
 
解题思路:从第一个质数2开始对输入的long类型数data进行分解。例如输入180,能被2整除则180/2=90,依次类推,如果结果45不能再被2整除,则除数加1,这样到合数也会被跳过,不会再除尽(例如会跳过4,最后去除5),这样反复操作就会得到一个数的所有质数因子。
 
具体代码如下所示:

public class Main {
  public String calculate(long data) {
    int index = 2;                 //初始化质因子为最小质数
    StringBuilder sb = new StringBuilder();    //用来保存结果
    while (data >= index) {                          //如果该数还可能存在质因子
      if (data % index == 0) {
        sb.append(index).append(" ");    //记录下该质因子,接着处理,不要跳过该质因子
        data /= index;
      } else {
        ++index;                                  //跳过该数,寻找下一个质因子
      }
    }
    return sb.toString();
  }

  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    long data = in.nextLong();
    Main test = new Main();
    System.out.println(test.calculate(data));
  }
}

 

posted @ 2017-08-22 13:58  刘帅朝  阅读(624)  评论(0编辑  收藏  举报