算术基本定义秒了
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
import java.util.*;
// 建立质数表
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt(), prim;
if(n == 1){// 1既不是素数也不是合数
return;
}
if(n <= 3){
System.out.println(n);
return;
}
// 先建立质数表
TreeSet<Integer> table = new TreeSet<>();
int sq = (int)Math.sqrt(n);
for(int i = 2; i <= sq; ++i){
if(isPrim(i))table.add(i);
}
// 根据质数表从小到大尝试
Iterator<Integer> it = table.iterator();
prim = it.next();
while(n > 1){
if(n % prim == 0){
System.out.print(prim+" ");
n /= prim;
}else if(it.hasNext()){
prim = it.next();
}else{// n 为 质数
System.out.print(n);
break;
}
}
}
// 判断n >= 2是否为质数
public static boolean isPrim(int n){
if(n <= 1)return false;
if(n == 2)return true;
int sq = (int)Math.sqrt(n);
for(int e = 2; e <= sq; ++e){
if(n%e == 0)return false;
}
return true;
}
}

查看15道真题和解析