输入包含多组数据,每组数据包含一个正整数a(2≤a≤1000000)。
对应每组数据,以“a = a1 * a2 * a3...”的形式输出因式分解后的结果。
10<br/>18
10 = 2 * 5<br/>18 = 2 * 3 * 3
import java.util.*; public class Main{ public static void getPrimeNum(ArrayList<Integer> list,int n){ for(int i = 2; i <= Math.sqrt(n); i++){ if(n % i == 0){ while(n % i == 0){ list.add(i); n = n / i; } } } //素数的情况 if(n != 1){ list.add(n); } } public static void main(String[] args){ Scanner scan = new Scanner(System.in); while(scan.hasNext()){ int a = scan.nextInt(); ArrayList<Integer> list = new ArrayList<>(); getPrimeNum(list,a); System.out.printf("%d = ",a); System.out.printf("%d",list.get(0)); for(int i = 1; i < list.size(); i++){ System.out.printf(" * %d",list.get(i)); } System.out.println(); } } }
import java.util.*; import java.math.*; public class Main{ public static List<String> fun(int n){ List<String> list = new ArrayList<>(); for(int i = 2;i <= Math.sqrt(n);i++){ while(n % i == 0){ list.add(String.valueOf(i)); n /= i; } } if(n != 1){ list.add(String.valueOf(n)); } return list; } public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ int n = sc.nextInt(); List<String> list = fun(n); System.out.printf("%d = %s\n",n,String.join(" * ",list)); } } }