17 质因数
作者: Turbo时间限制: 1S章节: 基本练习(循环)
问题描述 :
将一个正整数N(1<N<32768)分解质因数。例如,输入90,打印出90=233*5。
输入说明 :
输入一个正整数
输出说明 :
按照范例输出。
其中的质因数的输出顺序按照从小到大的顺序。
如果输入的整数本身是质数,则输出形式为:
3=3
输入范例 :
66
输出范例 :
66=2311
import java.util.Scanner;
public class test_17 {
/**
* 17 质因数
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
if(isPrimeNumber(num)){
System.out.println(new StringBuilder().append(num).append("=").append(num).toString());
return;
}
StringBuilder builder = new StringBuilder();
int n=1,temp;
boolean flag=false;
for (int i = 2; i <=num/2 ; i++) {
if(isPrimeNumber(i)){
temp=num;
while(temp%i==0){
temp/=i;
builder.append(i).append("*");
n*=i;
if(n==num){
flag=true;
break;
}
}
}
if(flag){
break;
}
}
String s = builder.toString();
String substring = s.substring(0, s.lastIndexOf("*"));
System.out.println(new StringBuilder().append(num).append("=").append(substring));
}
public static boolean isPrimeNumber(int n){
for (int i = 2; i <=Math.sqrt(n) ; i++) {
if(n%i==0){
return false;
}
}
return true;
}
}