/*題目
分解質因數(5分)
題目內容:
每個非素數(合數)都可以寫成幾個素數(也可稱為質數)相乘的形式,這幾個素數就都叫做這個合數的質因數。比如,6可以被分解為2x3,而24可以被分解為2x2x2x3。
現在,你的程序要讀入一個[2,100000]范圍內的整數,然后輸出它的質因數分解式;當讀到的就是素數時,輸出它本身。
輸入格式:
一個整數,范圍在[2,100000]內。
輸出格式:
形如:
n=axbxcxd
或
n=n
所有的符號之間都沒有空格,x是小寫字母x。
輸入樣例:
18
輸出樣例:
18=2x3x3
*/
import java.util.Scanner; public class Main { public static boolean IsPrime(int a) { boolean t=true; for (int i =2;i<a;i++) { if(a%i==0) { t=false;//就不是素數了 break; } } return t; } public static String myMethod(int a) { String Str=""; int count=1; if(IsPrime(a))//如果輸入的數字a是素數,就直接輸出結果 { Str=a+"="+a; } else//否則,繼續 { while(!IsPrime(a))//如果當前a的值不是素數就繼續循環 { for(int j=2;j<a;j++) { if(a%j==0&&count==1) { Str=a+"="+j+""; a/=j; count++; break;//為了 a繼續從2開始取余 } else if(a%j==0&&count!=1) { Str=Str+"x"+j; a/=j; break;//為了 a繼續從2開始取余 } } } Str=Str+"x"+a;//如果A是素數就最后加上a } return Str; } public static void main(String[] args) { Scanner in = new Scanner(System.in); int number = in.nextInt(); String result=myMethod(number); System.out.print(result); } }