一個正整數N的因子中可能存在若干連續的數字。例如630可以分解爲3*5*6*7,其中5、6、7就是3個連續的數字。給定任一正整數N,要求編寫程序求出最長連續因子的個數,並輸出最小的連續因子序列。
輸入格式:
輸入在一行中給出一個正整數N(1<N<231)。
輸出格式:
首先在第1行輸出最長連續因子的個數;然後在第2行中按“因子1*因子2*……*因子k”的格式輸出最小的連續因子序列,其中因子按遞增順序輸出,1不算在內。
輸入樣例:
630
輸出樣例:
3 5*6*7
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int inputNum= sc.nextInt();
int midNum = (int)Math.floor(Math.sqrt(inputNum))+1;
int maxCount=0;
int xStart=0;
int xEnd=0;
for (int i=2;i<midNum;i++){
int k=i;
int maxTemp=0;
int inputNumTemp=inputNum;
while(inputNumTemp % k == 0){
maxTemp++;
if(maxTemp>maxCount){
maxCount=maxTemp;
xStart=i;
xEnd=k;
}
inputNumTemp=inputNumTemp/k;
k++;
}
}
if(maxCount == 1){
System.out.println(maxCount);
System.out.println(xStart);
}
else if(maxCount == 0){
System.out.println("1");
System.out.println(inputNum);
}
else{
System.out.println(maxCount);
for(int i=xStart; i< xEnd;i++){
System.out.print(i+"*");
}
System.out.print(xEnd);
}
}
}