算术基本定义秒了
质数因子
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; } }