package SelfStudy;
import java.util.Scanner;
public class a010SeniorHighAccept2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNext()) {
int number = input.nextInt(); // input 20
boolean begin = true;
for (int i = 2; i <= number; ++i) {
int divisibleTimes = 0; //自己沒有想到divisibleTimes(被整除的次數) 一次被整除就2就多一個次方
if (number % i == 0) {
if (!begin) { // 如果number % i == 0為false
System.out.print(" * " + i); // 則印出 " * " + i
} else { // 如果number % i == 0為true ex: 20 ÷ 2 = 10 ... 0
begin = false;
System.out.print(i);
// 若input為20 這邊則印出公因數 2 4 5 10 20
// 不包括公因數1 因為for 迴圈從2開始
}
while (number % i == 0) {
number /= i; // 即number = number / i ex: 10 = 20 ÷ 2
++divisibleTimes;
}
}
if (divisibleTimes > 1) {
System.out.print("^" + divisibleTimes);
}
}
}
}
}
if (number % i == 0) {// 如果number % i == 0 為 true (意思就是如果 i 是因數,i可整除number)
if (!begin) { //begin在這裡是用來判斷是否為第一個因數 (如果是第一個因數 前面不用輸出 '*' 單純在解決格式的問題)
System.out.print(" * " + i);
// 若input為20 此區塊則印出 " * 5"
} else { // 如果begin == true (意思就是他是第一個因數)
begin = false; // 把begin = false 因為第一個因數已經輸出過了,後面全部都需要 '*'
System.out.print(i);
// 若input為20 此區塊則印出 "2"
}
while (number % i == 0) {
number /= i; // 即number = number / i ex: 10 = 20 ÷ 2
++divisibleTimes;
} //這裡在計算它的次方數
}
if (divisibleTimes > 1) {
System.out.print("^" + divisibleTimes);
} //次方數大於1就補上次方數