求输入整形数字的质数因子

3 阅读1分钟
/**
 * 求输入整形数字的质数因子
 * @param srcNumStr
 */
public static List<Integer> getPrimFactorList(String srcNumStr){
    if (srcNumStr==null){
        System.out.println("请输入整型数字");
        return null;
    }
    if (srcNumStr.trim().isEmpty()){
        System.out.println("请输入整型数字");
        return null;
    }
    Integer integer = Integer.valueOf(srcNumStr);
    int ret=1;
    for (int i = 0; i < 9; i++) {
        ret*=10;
    }
    int ret1=ret*2+14;
    if (!(integer>=1 && integer <= ret1)){
        System.out.println("输入的整型数字超过数据范围");
        return null;
    }
    List<Integer> primeNumList = getPrimeList(integer);
    ArrayList<Integer> primeFactorList = new ArrayList<>();
    boolean flag=true;
    for (int i = 0; i < primeNumList.size(); i++) {
        if (i==primeNumList.size()){
            break;
        }
        Integer tempPrime = primeNumList.get(i);
        if (flag){
            if (integer%tempPrime==0){
                primeFactorList.add(tempPrime);
                flag=false;
                i-=1;
                integer/=tempPrime;
                continue;
            }else {
                flag=true;
                continue;
            }
        }else {
            if (integer%tempPrime==0){
                primeFactorList.add(tempPrime);
                flag=false;
                i-=1;
                integer/=tempPrime;
                continue;
            }else {
                flag=true;
                continue;
            }
        }
    }
    return primeFactorList;
}

/**
 * 求整型数字的质数
 * @param srcNum
 * @return
 */
public static List<Integer> getPrimeList(int srcNum){
    ArrayList<Integer> primeList = new ArrayList<>();
    boolean flag=true;
    for (int i = 2; i < srcNum; i++) {
        for (int j = 2; j < i-1; j++) {
            if (i%j==0){
                flag=false;
                break;
            }else {
                flag=true;
                break;
            }
        }
        if (flag){
            primeList.add(i);
        }
    }
    return primeList;
}