/**
* 求输入整形数字的质数因子
* @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;
}
posted on 2025-03-20 08:55  CoderOilStation  阅读(8)  评论(0)    收藏  举报